Hibernate还是比较常用的于是我研究了一下Hibernate批量操作在这里拿出来和大家分享一下希望对大家有用
Hibernate是一个开放源代码的对象关系映射框架它对JDBC进行了非常轻量级的对象封装使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库 Hibernate可以应用在任何使用JDBC的场合既可以在Java的客户端程序使用也可以在Servlet/JSP的Web应用中使用最具革命意义的是Hibernate可以在应用EJB的JEE架构中取代CMP完成数据持久化的重任
Hibernate批量操作
即使是使用JDBC在进行大批数据更新时BATCH与不使用BATCH有效率上也有很大的差别我们可以通过设置batch_size来让其支持批量操作
举个例子要批量删除某表中的对象如delete Account打出来的语句会发现Hibernate找出了所有ACCOUNT的ID再进行删除这主要是为了维护二级缓存这样效率肯定高不了在后续的版本中增加了bulk delete/update但这也无法解决缓存的维护问题也就是说由于有了二级缓存的维护问题Hibernate批量操作效率并不尽如人意!
从前面许多要点可以看出很多时候我们是在效率与安全/准确性上找一个平衡点无论如何优化都不是一个纯技术的问题你应该对你的应用和业务特征有足够的了解一般的优化方案应在架构设计期就基本确定否则可能导致没必要的返工致使项目延期而作为架构师和项目经理还要面对开发人员可能的抱怨必竟我们对用户需求更改的控制力不大但技术/架构风险是应该在初期意识到并制定好相关的对策
还有一点要注意应用层的缓存只是锦上添花永远不要把它当救命稻草应用的根基(数据库设计算法高效的操作语句恰当API的选择等)才是最重要的