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的问题的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate延迟加载Lazy

Hibernate延迟加载Lazy

Hibernate延迟加载Lazy

Hibernate项目用Maven创建(转)

初识Hibernate 以及如何使用Maven创建Hibernate项目

maven 项目 hibernate 配置