Hibernate的懒加载问题

原创 2016年08月30日 21:58:06

简述: 当我们查询一个对象的时候,在默认情况下,返回的只是该对象的普通属性,当用户去使用对象属性时,才会向数据库发出再一次的查询.这种现象我们称为 lazy现象.

解决方法可以这样:

1.      显示初始化 Hibernate.initized(代理对象)。

2.      修改对象关系文件 lazy  改写 lazy=false。

3.      通过过滤器(web项目)openSessionInView。



前面两种就不解析了,现在讲讲openSessionView。说白了就是让session范围更大,即稍微延时关闭Session。这里再画个图体会下:




讲解下代码怎么操作。


先创建一个类继承HttpServlet实现filter接口,例如:public class MyFilterOnSessionView extends HttpServlet implements Filter。


然后在web.xml文件中配置

<servlet>
		<description>This is the description of my J2EE component</description>
		<display-name>This is the display name of my J2EE component</display-name>
		<servlet-name>MyFilterOnSessionView</servlet-name>
		<servlet-class>com.lmk.filter.MyFilterOnSessionView</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>MyFilterOnSessionView</servlet-name>
		<url-pattern>/MyFilterOnSessionView</url-pattern>
	</servlet-mapping>



最后把你平时对Hibernate中的Session打开和关闭代码放在doFilter方法中,例如:

@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
	FilterChain arg2) throws IOException, ServletException {

	Session session = null;
	Transaction ts = null;
try {
    //打开Session
	session = HibernateUtil.getCurrentSession();
	//开始事务
	ts = session.beginTransaction();
	// 让它兜一圈
	arg2.doFilter(arg0, arg1);
	// 提交事务
	ts.commit();
} catch (Exception e) {
	throw new RuntimeException(e.getMessage());
} finally {
    //关闭Session
	HibernateUtil.closeSession();
}

}




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

关于Hibernate懒加载问题的最终解决方案

Hibernate的强大之处之一是懒加载功能,可以有效的降低数据库访问次数和内存使用量。但用的不好就会出现org.hibernate.LazyInitializationException。 这个异...

Hibernate懒加载异常的问题

对于Hibernate中懒加载异常问题有如下解决方案:      第一种:在配置文件中加入lazy="false"      代码中位置: lazy="false&quo...

hibernate懒加载问题

[size=small] ---------------------------------------------------------- 懒加载可以提高性能吗?不可以简单的说"能",因为Hibe...

解决因为hibernate的懒加载引起的json 序列化失败的问题

在使用hibernate的过程中,  对于某些关联的属性对象 有进行懒加载的操作,   这时如果存在懒加载的对象,进行json序列化的时候,会报错。 可以使用一个过滤器,进行 过滤不需要被序列化的属...

java-web hibernate中的懒加载问题

1.延迟加载机制 延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟...

hibernate懒加载问题

---------------------------------------------------------- 懒加载可以提高性能吗? 不可以简单的说"能",因为Hibernate的关系...

关于Hibernate懒加载问题的最终解决方案

Hibernate的强大之处之一是懒加载功能,可以有效的降低数据库访问次数和内存使用量。但用的不好就会出现org.hibernate.LazyInitializationException。 这...

failed to lazily initialize a collection of role(hibernate一对多或者多对多懒加载问题)

hibernate 中fetch=FetchType.LAZY问题  分享| 2013-08-13 10:22殁恋 | 浏览 8358 次  编程语言 我的实体类Deptment 中 @O...

彻底解决SSH架构中的Hibernate懒加载问题

在客户端使用AJAX框架,服务端采用Struts2+Spring+Hibernate的架构中,

hibernate懒加载问题

Hibernate懒加载解析 在Hibernate框架中,当我们要访问的数据量过大时,明显用缓存不太合适, 因为内存容量有限 ,为了减少并发量,减少系统资源的消耗,这时Hibernate用懒加载机制...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)