mybatis sql映射文件和hibernate映射文件有什么不同

mybatis sql映射文件和hibernate映射文件有什么不同,第1张

11 Hibernate 简介

Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过Hibernate 提供的方法完成持久层 *** 作。程序员甚至不需要对SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC接口加以执行。

12 MyBatis简介

iBATIS 的着力点,则在于POJO 与SQL之间的映射关系。然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。相对Hibernate“O/R”而言,iBATIS 是一种“Sql Mapping”的ORM实现。

第二章开发对比

开发速度

Hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉得要用好Mybatis还是首先要先理解好Hibernate。

开发社区

Hibernate 与Mybatis都是流行的持久层开发框架,但Hibernate开发社区相对多热闹些,支持的工具也多,更新也快,当前最高版本418。而Mybatis相对平静,工具较少,当前最高版本32。

开发工作量

Hibernate和MyBatis都有相应的代码生成工具。可以生成简单基本的DAO层方法。

针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。

数据库里面的字符不分大小写,但是java实体类的属性是敏感的,所以写配置文件时属性名一定要跟实体类里面一样的,列名不用管大小写问题。

但是你写hql时:例如:select from User ,这个User 是你的实体类名,不是你的表名,hibernate是通过配置文件将表名与实体类名映射的。

Hibernate配置文件中,有一个hibernatehbm2ddlauto选项。

当值为create时,会先删除数据表,然后重新创建。

当值为update时,会更新数据表结构,数据还存在。

也就是说上面两种情况,会按照映射文件中的length来设置。

但是,当值为validate时,就会检查映射文件和数据库表设计,当不一致时,就会抛异常。

顺便说一下,开发人员的习惯是先设计数据库,然后再进行映射。因此,length基本上不用配置。

<property name="" type="" column="" /> 就够用了。

除非,你要先设计Java POJO类,然后由类导出数据库结构,才需要填上length、not-null这些精细控制。但是,这种开发习惯基本上没人用,做个练习还是有价值的。

用xml配置时就需要每建一个表就hibernate-cfg-xml里加入它的映射。如果不用加入此代码就实现映射就要用注解的方式,系统会根据你的注解自动映射对应的数据表,实现几乎xml文件的零配置。

例如:

@Entity

@Table(name="user_info") //这个注解表明这个类对应数据表user_info

public class UserInfo implements Serializable{

//这里是mysql数据库的配置例子,相关配置请查阅相关资料

@Id

@Basic(optional=false)

@GeneratedValue(strategy=GenerationTypeIDENTITY)

//这个类是一个POJO(简单java对象),相当于对数据表的一个映射,定义每个数据表的字段,

//并提供getter,setter方法。假如user_info有name,sex两个字段

private String name;

private String sex;

public String getName(){

return name;

}

public void setName(String name){

thisname=name;

}

//sex属性同上

}

这样就可以不用在xml文件里,对每个表进行描述和映射,也不用hibernate-cfg-xml文件了。其它还需要配置的地方请根据自己情况查查资料吧。

以上就是关于mybatis sql映射文件和hibernate映射文件有什么不同全部的内容,包括:mybatis sql映射文件和hibernate映射文件有什么不同、hibernate映射postgreSQL数据库中的表时,表名是大写的时候为什么hibernate不能映射实体、hibernate的映射文件字段长度和数据库里面的字段长度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9308823.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存