网上搜的一些优化Ibatis的注意事项

1.         强烈建议使用parameterClass(除非没必要)。通过提供parameterClass,您可以获得更好的性能,因为如果框架事先知道这个类,就可以优化自身的性能。



2.        resultMap中columnIndex 属性的使用,某些JDBC Driver可以大幅提高性能,某些则没有任何效果。



3.         不要使用隐式的ResultMap,因为resultClass的自动映射也对性能有轻微的不利影响。因为读取ResultSetMetaData信息会使某些JDBC Driver变慢。



4.         涉及到复杂类型属性查询时,如果产生了N+1式select,可以用联合查询和嵌套的属性映射来代替(1:1select),但是,更好的办法是使用延迟加载和字节码增强选项的子查询。但是,如果要缓存查询结果,则使用子查询(N+1式select)来缓存查询结果。(?)



5.         尽量避免复杂类型集合属性的使用,这种查询的效率很低(是典型的N+1select)。



6.         为了提高性能,最好是手工明确地使用SqlMapClient的startTransaction(),commitTransaction()或rollbackTransaction()来划分事务范围,这样做可以减少连接池的通讯流量和数据库连接的初始化。


7.         自己实现分页查询,不要使用iBatis自带的分页查询(queryForPaginatedList)和queryForList(String,int,int)。前者虽然实现了通过rowResult的分页,但是毕竟是通过jdbc的调用,不如直接通过sql语句的分页效率高(这在通过对海量数据库记录表进行查询是会有明显体现);后者更是将全部的记录读出到内存,再通过skip和max参数来分页,效率极低。

猜你喜欢

转载自suzhicheng.iteye.com/blog/1154911
今日推荐