EJB很重,不需要分布式的中小项目慎用,Hibernate虽好,公司缺少高水平的OO设计师,程序员水平参次不齐,iBatis是我本人比较喜好的半自动ORM东东。
持久层使用了iBatis后,团队中以前八仙过海的jdbc包装不见了,大家的编码风格统一了,会补长木桶较短的木板。大家不会再把精力浪费到分页 连接池 主键生成等地方了,可以集中精力进行业务组件的编写。
以下是个人感受:
1.缓存不用太可惜,不过具体用哪一种(MEMORY LUR FIFO OSCACHE)容量设多大,都得根据项目的实际情况来定,我通常首选LUR。正确设定缓存的Flush语句,杜绝缓存中脏数据产生的可能。缓存使用前提是,系统中对表的读写一定要都通过ibatis来进行,也就是封闭的。
2.动态SQL的确是个强点。熟悉后感觉很不错。iBatis中所有的DAO方法都只传一个值对象,复杂查询当然也不例外。
3.复杂对象一定要lazyload = true. 对于性能上有一定的好处。
4.iBatis其实已经把Dao接口和SQLMap实现层实现了解藕,感觉有点象Spring倡导的Ioc.
5.通常我会在写完Service接口后,直接写一个junit测试类,它是业务层和WEB层的连接点,进行测试很重要,一是方便重构后检测是否破坏了功能,另外,编写测试类也是一个掌握此类用法的过程。看着一排绿色的通过进度条,心情大好。
6.关于辅助工具:hibernate带的工具就很方便,iBatis的开发者好象觉得这个够简单了,没必要弄这么个工具。现在其官方网站的主页上有一个用Perl写的生成器,用表的DLL脚本作为源,自动化产生Pojo 和sqlMap xml配置文件,我down下来测试了一下,郁闷,60%都会报错,不知为何。我考虑用Java或delphi写一个简单易用的,有GUI的。如果有达人知道网上哪儿有了这么个东西,请告诉我,非常感谢。