您的位置:首页 > 其它

初尝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都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。
Hibernate和MyBatis都支持JDBC和JTA事务处理。

Mybatis优势

MyBatis可以进行更为细致的SQL优化(但是自己得写大量的SQL语句,不过用它的Dynamic
SQL确实灵活),可以减少查询字段(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本身提供的缓存机制不佳。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: