文章出自:http://www.blogjava.net/flyingis/archive/2005/11/15/19809.aspx
作者:Flyingis
在使用Hibernate进行查询的时候大家都会用到Hibernate缓存,其中Session缓存即一块内存空间,存放了相互关联的Java对象,这些位于Session缓存中的对象就是持久化对象,Session根据持久化对象的状态变化来同步更新数据库。这个Session缓存是Hibernate的一级缓存。此外,SessionFactory有一个内置缓存和一个外置缓存,即Hibernate的第二级缓存。而Hibernate正是由于这些缓存的存在,才使得其数据库操作效率提高,就是说,在提供了方便易操作的操作数据库数据的方式的同时保证了工作效率,但是不能因此而免去后顾之忧,需要在设计业务逻辑层的时候考虑使用最优的架构,节省有效的系统资源。在查询方面,Hibernate主要从以下几个方面来优化查询性能:
1.降低访问数据库的频率,减少select语句的数目。实现手段包括:
使用迫切左外连接或迫切内连接检索策略。
对延迟检索或立即检索策略设置批量检索数目。
使用查询缓存。
2.避免多余加载程序不需要访问的数据。实现手段包括:
使用延迟检索策略。
使用集合过滤。
3.避免报表查询数据占用缓存。实现手段为利用投影查询功能,查询出实体的部分属性。
4.减少select语句中的字段,从而降低访问数据库的数据量。实现手段为利用Query的iterate()方法。
在插入和更新数据时,要控制insert和update语句,合理设置映射属性来保证插入更新的性能,例如,当表中包含许多字段时,建议把dynamic-update属性和dynamic-update属性都设为true,这样在insert和update语句中就只包含需要插入或更新的字段,这可以节省数据库执行SQL语句的时间,从而提高应用的运行性能。
还有什么其它的提升性能的方式希望和大家一起讨论。
posted on 2007-08-15 21:16
冬天出走的猪 阅读(191)
评论(0) 编辑 收藏 所属分类:
hibernate