hibernate批量查询问题

批量查询基本不适合使用现有的持久层技术来做,如CMP或hibernate,IBatis倒是可以。

下面这篇文章是谈Hibernate下数据批量处理解决方案 :
http://www.pcbookcn.com/article/2363.htm

该方案最后意思是:在批处理情况下,关闭Hibernate缓存,如果关闭Hibernate缓存,那么和直接使用JDBC就没有区别。

这里要说明的是两点:
1. 使用Hibernate并不能增强你批量查询的性能。
2. 和EJb的实体Bean一样,批量查询建议使用DAO。
3. 使用专门实现批处理缓存的第三方框架,如jdon框架。

在一定间隔对Session进行flush()和clear(),如作者所说,该方法虽不算优雅,却比较实用,但势必带来时间复杂度的提升。
批处理数据量很大的时候,如果能够动态定义hibernate.jdbc.batch_size,就可以控制session.flush(),session.clear()的调用次数,这样也许更好,不知是否有可行的方法。

使用Hibernate推荐的一个不算雅观但是很实际的模式:

open session in view :
http://www.jdon.com/jive/thread.jsp?forum=62&thread=22374

唉,模式被用来做修修补补,有些坏了模式的名声啊