您的位置:首页 > 其它

Hibernate高级特性以及性能优化

2012-03-12 14:34 204 查看
1)延迟加载 : 当程序执行getter方法获取时,才发送sql语句加载数据. 延迟加载给程序带来好处,但是要避免session过早关闭问题 a. load()和get()两个方法区别 load()采用延迟加载机制,返回的是一个proxy代理对象 get()没有采用延迟加载,返回的是一个对象实例 b.Hibernate.initialize(user) 可以强制user对象实例化 c.hbm映射描述文件中,<class>,<property>,<set>等元素 都可以使用lazy属性,默认lazy="true",启用延迟加载
lazy="false"禁用延迟加载.

2)缓存机制 Hibernate每次查询先去缓存中查找,没有才去数据库查询. a.一级缓存 Session级别的缓存,缓存load,get出来的单个对象.默认开启. 使用同一个Session对象多次查询同一个User对象, 只会发送一次SQL取数据库获取 b.二级缓存 SessionFactory级别的缓存.默认情况是关闭. (1)首先在hibernate.cfg.xml中指定EhCache缓存策略 <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
(2)在src下添加ehcache.xml配置文件 (3)在User.hbm.xml中添加<cache/>定义 <cache usage="read-only"/> ,如果涉及更新,使用read-write c.查询缓存 缓存HQL查询结果集,对相同的HQL查询语句,只去数据库查询一次.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: