共同点
)1) Hibernate和MyBatis都是通过SessionFactoryBuider从XML配置文件中获取会话工厂,从会话工厂获取会话,从会话执行事务
)2) Hibernate和MyBatis都是JDBC(javadatabaseconnectivity,java数据库连接)和JTA (javatransactionapi,java事务API ) apple
注: jdbc和jta的主要作用是加强对数据的访问。
)3)基于对象关系映射(ORM )思想解决了实体与数据库的映射问题
区别:
(1)关于sql ) mybaits通过mapper.xml维持映射结果,程序员手动编写sql比hibernate自动生成hql(hibernatesql )更灵活,sql视图在提高开发效率的同时,SQL语句的调谐更容易) ) ) hibernate的hql数据库的可移植性更好,体现在健壮性上。 hibernate在删除级联时效率低下,数据量大,如果表多,则根据关系操作会变得复杂。
)2)对于缓存,mybatis和hibernate都可以使用第三方缓存,但hibernate的辅助缓存机制优于maybatis
(3)结构
Hibernate:Hibernate是当前最流行的ORM框架之一,为JDBC提供了更完整的封装。 Hibernate的o/r映射提供了POJO和数据库表之间的映射以及SQL的自动生成和执行。
Mybatis:Mybatis同样也是一个非常受欢迎的ORM框架,重点是POJO和SQL之间的映射关系。 然后,映射配置文件以将SQL所需的参数和返回的结果字段映射到指定的POJO。 对于Hibernate“O/R”,Mybatis是“Sql Mapping”的ORM实现。
)4)难度
Hibernate的真正掌握比Mybatis更难,Hibernate比Mybatis更重要。
Mybatis框架比较简单容易得到,但比较简陋。
)5)开发工时
因为Mybatis需要我们手动编写SQL语句,使其回归到最原始的方式,所以可以根据需要指定查询的字段,以提高程序的查询效率。
Hibernate还可以自己编写SQL语句以指定需要查询的字段,但这会破坏Hibernate的封装和简单性
Hibernate优势
Hibernate的DAO层开发比MyBatis简单,MyBatis需要维护SQL和结果映射。
与MyBatis相比,Hibernate更易于维护和缓存对象,以及添加、删除和修改的对象。
Hibernate数据库可移植性好,MyBatis数据库可移植性差,不同的数据库需要编写不同的SQL。
Hibernate提供了更好的二级缓存机制,可以使用第三方缓存。 MyBatis自身提供的缓存机制不好
MyBatis可以更精细地优化SQL,并可以减少查询字段。
Mybatis优势
MyBatis容易掌握,Hibernate的门槛很高。