到目前为止,项目上所用到的MyBatis的地方很少,使用Hibernate居多。
看了论坛上很多资料,想深入的学习下去,在这里向开发者致敬,向前辈学习。
言归正传,如下:
(1)Mybatis是Apache的开源项目,前身是iBatis,随着版本推移,直到iBatis3之后更名为Mybatis。
(2)Mybatis是一个Java持久层框架,包括DAO和SQL Maps。但这个框架是半自动的,有利有弊。
(3)说到利弊,自然要对比JDBC和Hibernate。先说JDBC,现在有点规模的项目应该都不会直接使用JDBC进行编程,JDBC和代码的耦合度太高,夹在Java代码块中,使代码看的很乱,这是硬伤。另外JDBC维护起来相对麻烦,在项目的SQL不断变化时很容易使开发者头大。Hibernate是相对与Mybatis重量级的持久层框架,相对Mybatis特殊处理的sql,不够灵活,框架规模大,自然效率上会下降。
(4)对于开发人员而言,框架和业务分离是大家都想看到的,所以SQL和JAVA逻辑分开,你好我好大家好。一个专注与数据,一个专注与业务。
(5)Mybatis不依赖第三方的库,在github上可以下到mybatis的jar包以及和spring整合的jar包。
(6)sql写在xml中,方便管理和优化,也可以特殊处理很多内容。
(7)通过mapper将dao和配置xml中sql语句关联,将业务逻辑和数据访问逻辑分开,这样系统在设计的时候更清新,容易维护。
(8)但Mybatis在实际应用中,需要编写大量的SQL语句,对开发人员的SQL水平有一定的要求,尤其是关联字段多、表多的时候,难度会有所增加。
(9)SQL语句依赖数据库,针对不同的数据库,如果要做到数据库可移植,需要做大量的配置工作。
(10)好在现在各种框架都有插件,可以帮助开发人员在前期先生成一定的代码和sql语句,在这基础上开发者再进行深入定制开发,相对纯手动开发,效率会提升不少。