2个回答
展开全部
3.Hibernate高级特性以及性能优化
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查询语句,只去数据库查询一次.
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查询语句,只去数据库查询一次.
Storm代理
2023-08-29 广告
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询