初尝Mybatis有感
2014-11-15 11:40
148 查看
在学校的时候和实习的时候, 自己学的是Hibernate, 但在第一个公司使用的是Mybatis(原名为ibatis,迁移到Google Code后改之),于是乎就开始学下Mybatis。
到现在也用了有快2个月了, 感觉ORM框架都差不多, 至少重基本的使用上来说, 当成工具来用学习成本不高, 熟悉一周左右就能开始写了。在使用过程中感觉中文的文档或者答案时间都不是太新, 所以参看官方的Doc了。
Mybatis 文档官网:http://mybatis.github.io/mybatis-3/
从个人使用上来说,Mybatis有一点我特别喜欢, 那就是面向结果的查询方式, 不管你的表结构是1:1还是1:n, 只要你最终所需要获得的结果是1:1那么在写映射ResultMap的时候就按结果1:1来写,感觉很方便。
而且Mybatis官网比Hibernate好看很多, 特别简洁, 它的在github pages也是简洁到不行(这个是用Jekyll这个语言开发者的一个模版), 个人是非常喜欢这种风格。
那么从更别人客观的方面来看Mybatis和Hibernate的优劣:
Hibernate和MyBatis都支持JDBC和JTA事务处理。
SQL确实灵活),可以减少查询字段(Hibernate也行,就是这样就破坏了Hibernate用HQL的方便)。
MyBatis相对容易使用(官网文档没几页,只要熟悉所使用数据库的语言),而Hibernate学习成本高挺多的。
Mybatis有直接的SQL语句可见(分析大表相关的所有select语句),对存储数记录较大的800W条之类的需要分库分表的情况,会比Hibernate来的方便些。
大量SQL语句和映射[如果关联查询的话] ,改起代码来还真是比Hibernate慢很多)
Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便(Mybatis改个需求要改好多东西)。
Hibernate数据库移植性很好(用HQL不用熟悉SQL语句都能写,如一个save就保存了),MyBatis的数据库移植性不好(不过公司一般内部统一使用某个数据库,感觉也没差太多)
Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。
到现在也用了有快2个月了, 感觉ORM框架都差不多, 至少重基本的使用上来说, 当成工具来用学习成本不高, 熟悉一周左右就能开始写了。在使用过程中感觉中文的文档或者答案时间都不是太新, 所以参看官方的Doc了。
Mybatis 文档官网:http://mybatis.github.io/mybatis-3/
从个人使用上来说,Mybatis有一点我特别喜欢, 那就是面向结果的查询方式, 不管你的表结构是1:1还是1:n, 只要你最终所需要获得的结果是1:1那么在写映射ResultMap的时候就按结果1:1来写,感觉很方便。
而且Mybatis官网比Hibernate好看很多, 特别简洁, 它的在github pages也是简洁到不行(这个是用Jekyll这个语言开发者的一个模版), 个人是非常喜欢这种风格。
那么从更别人客观的方面来看Mybatis和Hibernate的优劣:
两者相同点
Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。Hibernate和MyBatis都支持JDBC和JTA事务处理。
Mybatis优势
MyBatis可以进行更为细致的SQL优化(但是自己得写大量的SQL语句,不过用它的DynamicSQL确实灵活),可以减少查询字段(Hibernate也行,就是这样就破坏了Hibernate用HQL的方便)。
MyBatis相对容易使用(官网文档没几页,只要熟悉所使用数据库的语言),而Hibernate学习成本高挺多的。
Mybatis有直接的SQL语句可见(分析大表相关的所有select语句),对存储数记录较大的800W条之类的需要分库分表的情况,会比Hibernate来的方便些。
Hibernate优势
Hibernate的DAO(或者交DAL)层开发比MyBatis简单,Mybatis需要写ModelMapper.xml(大量SQL语句和映射[如果关联查询的话] ,改起代码来还真是比Hibernate慢很多)
Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便(Mybatis改个需求要改好多东西)。
Hibernate数据库移植性很好(用HQL不用熟悉SQL语句都能写,如一个save就保存了),MyBatis的数据库移植性不好(不过公司一般内部统一使用某个数据库,感觉也没差太多)
Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。
相关文章推荐
- mybatis1有感
- mybatis2有感
- mybatis3有感
- #读mybatis注解有感#
- Mybatis3 缓存
- maven项目下的Spring+SpringMVC+Mybatis整合实例
- Mybatis大字段clob处理
- Mybatis实现insert获取自增id
- Mybatis中SqlSession下的四大核心组件分析
- MyBatis - (二) 一对一映射和一对多映射
- 互联网+总决赛有感
- MyBatis 详解(一对一,一对多,多对多)
- Mybatis模糊查询
- 初识MyBatis
- SpringBoot 整合Mybatis3.x注解开发
- 梦想是如何失去的?看小米和魅族发布有感
- MyBatis之ResultMap简介,关联对象
- Spring+SpringMVC+Mybatis整合系列(二)Eclipse新建Maven web项目
- mybatis的SQL注意点
- 【感悟】2015-2016年之Java培训有感