iBatis2是Hibarnate和其他持久化框架的一个补充,iBatis提供非常灵活的映射策略,在执行效率上接近JDBC。在配置上也非常的灵活,可以实现Hibernate类似的关联关系。iBatis使用好了也会有很好的代码复用效果。这关键在于开发者的水平了。
iBatis不能直接支持多级关联,如果需要实现,则必须通过写非常复杂的SQL去实现,但是这有些得不偿失,不但难以实现而且难以理解和维护。这是iBatis不容易做到的。双向多对多可谓iBatis最复杂的关联关系了。
iBatis的配置文件也有不爽的地方,那就是对配置元素的顺序有比较严格限制,当顺序错误的时候,则应用不能工作。
iBatis在和Spring整合的中,如果sqlmap配置文件有错误,哪怕一个标点符号的错误,则整个应用不让启动,这是让人难以接受的。
iBatis中,在任何的SQL语句中,都不要去写分号,否则出现问题你就等着傻眼吧,在SQL里出现分号不会提示错误,应用启动正常,但运行就挂了,没啥有用的提示信息。因此这点要千万记好了。
iBatis中,由于SQL是写在xml配置中的,如果当SQL总出现大于小于(> 、<)的比较,或者其他特殊字符,则会破坏xml配置文件的结构,这时候应该使用<![CDATA[ 和 ]]>将sql串括起来。
iBatis的sqlmap配置文件可以分布在多个文件和包中,但是在任何一个里都可以引用其他的语句和映射类型。当然,有众多表的情况下,将所有的sqlmap映射定义到一个表中是不明智的,为了统一,常常一个表对应一个实体一个sqlmap文件。
iBatis和hibernate有很多相似的地方,也可以配置缓存和数据源连接池,这些配置都时候和实际的压力测试结合而定的。
iBatis在使用上比hibernate麻烦,如果一个开发人员,同时熟悉这两种技术,首先应该选择hibernate,而不是ibatis。
iBatis更偏向数据的建模,Hibernate更偏向对象建模,Hibernate开发一般是从实体类开始,然后结合xdoclet导出sql脚本和hbm.xml配置文件。但iBatis开发是先从数据库建立起实体对象和其间的关联,然后写配置文件。相比之下,Hibernate更符合面向对象的设计思想。
iBatis是Hibernate的补充和益友,而非竞争者,一个项目中这两种技术完全可以同时存在,没有什么不可以的。
最后再重复一点,只有掌握了iBatis众多的开发技巧,你的开发才有效率和质量的保障。
本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/83909,如需转载请自行联系原作者