mybatis与hibernate区别:黑马程序员 Hibernate与 MyBatis的比较
mybatis与hibernate区别:黑马程序员 Hibernate与 MyBatis的比较MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object 普通的 Java对象)映射成数据库中的记录。两者相同点
Hibernate 简介
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成sql语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
MyBatis 简介
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object 普通的 Java对象)映射成数据库中的记录。
两者相同点
- Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。
- Hibernate和MyBatis都支持JDBC和JTA事务处理。
- 两者不同点
- (1)sql方面:mybaits通过mapper.xml维护映射结果,程序员手动编写sql相比hibernate自动生成hql(hibernate sql)更加灵活,sql调优更加容易(hibernate因为更好的封装性,开发效率提高的同时,sql语句调优要更费力,当然可以手动修改sql来优化,但是同时也会影响开发效率);
- hibernate的hql数据库移植性更好,体现在强壮性。hibernate在级联删除的时候效率低;数据量大, 表多的时候,基于关系操作会变得复杂。
- (2)缓存方面:mybatis和hibernate都可以使用第三方缓存,而hibernate相比maybatis有更好的二级缓存机制