
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的映射文件字段长度和数据库里面的字段长度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)