mybatic

Mybatis和Hibernate的区别

Mybatis并不是一个完全的orm框架。Hibernate是面向对象,可以不使用sql语句。Mybatis是面向sql语句的。专注的是输入映射返回值映射以及sql语句的灵活性。

传统:dao,daoimpl


mybatic_第1张图片
mybatic_第2张图片
mybatic_第3张图片
mybatic_第4张图片

impl:

SqlSession sqlSession = sessionFactory.openSession();      

  User user = sqlSession.selectOne("test.getUserById", id);  

     sqlSession.close();

return user;

存在问题:dao中操作数据库的代码重复。可以考虑使用模板替代。statementId存在硬编码的问题。

另一种是mapper代理方法,程序员只需要写mapper接口相当于dao接口

mybatic_第5张图片
mybatic_第6张图片
mybatic_第7张图片
。查询性能,hibernate需要对性能进行优化,需要一个高手。Mybatis只需要对sql优化即可。

Hibernate具有自己的日志统计。Mybatis本身不带日志统计,使用Log4j进行日志记录。

mybatic    

session缓存,可以增强变现而且处理循环 依赖也是必须的。要开启二级缓存,你需要在你的SQL映射文件中添加一行: 

MyBatis可以进行更为细致的SQL优化,可以减少查询字段。

MyBatis容易掌握,而Hibernate门槛较高。

相同:

Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。

Hibernate和MyBatis都支持JDBC和JTA事务处理。

Hibernate优势

Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。

Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。

Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。

Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。


mybatic_第8张图片
mybatic_第9张图片
mybatic_第10张图片
mybatic_第11张图片
mybatic_第12张图片

你可能感兴趣的:(mybatic)