JPA抓取策略:Lazy和Hibernate抓取策略:Lazy的疑问
Hibernate抓取策略Lazy是可以延迟抓取的,即直到应用程序对集合进行了操作,才会去抓取
JPA标注使用抓取策略Lazy时,当我去使用集合时却报session缓存中没有集合数据异常,
没有延迟抓取,应该不是类似hibernate get和Load的问题啊
JPA和Hibernate的抓取策略Lazy到底有何异同?
[解决办法]
几乎是一模一样的。
lazy 只能在事务没有完成时处理,一旦事务完成就会出现异常。
像 lazy 这种功能基本上就是鸡肋,没有什么用处。如果确定需要使用的时,请直接使用强制加载。
[解决办法]
你需要使用opensessioninviewfilter
在lazy情况下,如果事务关闭了,你再取是会报错误的。
使用(hibernate/jpa)opensessioninviewfilter就不会了
[解决办法]
顶4楼
web.xml中配置:
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
[解决办法]
OpenSessionInViewFilter 是种很鸡肋的东西,把一个事务从请求一直拖到响应整整一个周期,如果并发量较高的话,这个应用立马得挂掉。
人家事务范围越小越好,这个好家伙,将事务延长至整个请求/响应的生命周期。
[解决办法]
设置延迟,需要的时候自己强制加载。
[解决办法]
关注关注
[解决办法]