systemxgl 2010-06-12
hibernate优化
(1)LazyLoad
在LazyLoad上推介不要什么字段都采用LazyLoad方式。对于一些基本属性建议将其Lazy设置为false,而对于一些可能消耗大量内存的字段,如clob这样的字段,建议设置为true,对于集合则全部设置为lazy=true。
是否采用lazyload对系统的性能会有非常明显的影响,同时尽量不要将Detachedobject放入HTTP的session中。
(2)Cache
Cache是提升性能常用的方法。hibernate本身对Cache有很好的支持,一级缓存:session二级缓存sessionFactory.二级缓存不是必须的,由开发人员自行决定,hibernate3默认的二级缓存是EhCache,也可以切换为OsCache,JBossCache。
(3)高效的查询语句
查询语句对系统的性能有明显的影响。采用占位符式的语法查询可保证语法分析器之进行一次分析,在参数不同的情况下并不会出现重复解析的现象。
统一查询语句的编写风格,包括大小写,空格等。
(4)配置
如jdbc。fetch-size的设置等连接池的设置。
查询性能如何优化?
1.降低访问数据库的频率,减少select语句的数目
1>使用迫切左外连接或迫切内连接检索策略
2>对延迟检索或逻辑检索设置批量检索策略
3>使用查询缓存
4>对集合对象设置检索策略(FetchingStrategies)
4.1>查询抓取
4.2>子查询抓取
4.3>连接查询抓取
4.4>批量抓取
2.避免多余的加载程序不需要访问的数据
1>使用延迟检索策略
1.1>持久化对象的延迟加载
1.2>集合对象的延迟加载
1.3>属性的延迟加载
1.4>解决org.hibernate.LazyInitializationException
2>使用集合过滤
3.避免报表查询数据占用缓存
1>利用投影查询功能
4.减少select语句中的字段,从而降低访问数据库的数据量
1>利用query的iterator()方法
2>使用dynamic-insert与dynamic-update