maven 项目 hibernate 处理延时加载 on session的问题
Posted 小康也想变大佬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven 项目 hibernate 处理延时加载 on session的问题相关的知识,希望对你有一定的参考价值。
“no session”异常,在使用hibernate3.0之前可以在如下处理
//在下面set 加上 lazy="false" 这个意思是你要延时加载吗 false就是不要
<set lazy="false" name="orderItems" inverse="false" cascade="save-update">
<key column="oid"/>
<one-to-many class="com.zking.hbdemo.entity.OrderItem"/>
</set>
即将延迟加载(也叫惰性加载)设置为false,但不用这么做,第一的原因是这样对性能影响很大,第二是hibernate3.0以后关联级别均为延时加载(代理对象)
注意!注意!这个这是在3.0版本之前的
3.0版本之后的处理方式
解决方案:
- 编程控制,Hibernate.initialize(对象);
- 在与spring集成后,使用spring中工具类
//编程控制
Session session = SessionFactoryUtil.OpenSession();
Order or = session.load(Order.class, order.getOrderId());
//在下面加一个Hibernate.initialize(对象);
Hibernate.initialize(or);
在与spring集成后,使用spring中工具类在web.xml里面配置下面的
<!-- 就是允许在每次的整个request的过程中使用同一个hibernate session,可以在这个request任何时期lazy loading数据 -->
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样就可以解决延时加载 on Session的问题了
以上是关于maven 项目 hibernate 处理延时加载 on session的问题的主要内容,如果未能解决你的问题,请参考以下文章