`
kang275284
  • 浏览: 165324 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用OpenSessionInViewInterceptor 的思路解决Hibernate Lazy

阅读更多
package com.iteye.common.test;

import junit.framework.TestCase;

import org.hibernate.FlushMode;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.SessionFactoryUtils;
import org.springframework.orm.hibernate3.SessionHolder;
import org.springframework.transaction.support.TransactionSynchronizationManager;

public abstract class AbstractTestBean extends TestCase {

	protected ApplicationContext applicationContext;

	private SessionFactory sessionFactory;

	private Session session;

	protected void setUp() throws Exception {

		String configFile = "spring/*.xml";
		applicationContext = new ClassPathXmlApplicationContext(configFile);
		sessionFactory = (SessionFactory) applicationContext.getBean("sessionFactory");
		session = SessionFactoryUtils.getSession(sessionFactory, true);
		session.setFlushMode(FlushMode.NEVER);
		TransactionSynchronizationManager.bindResource(sessionFactory, new SessionHolder(session));
	}

	protected void tearDown() throws Exception {
		TransactionSynchronizationManager.unbindResource(sessionFactory);
		SessionFactoryUtils.releaseSession(session, sessionFactory);
	}
}


这是我的TestCase的基类,所有的TestCase继承这个类,就可以具备OpenSessionInView的功能。
分享到:
评论

相关推荐

    集成spring的hibernate懒加载

    4. **使用Hibernate的Criteria API或HQL查询**:在查询时显式包含关联的对象,避免后期使用懒加载。 5. **使用Spring Data JPA的`@Transactional`注解**:确保业务方法在一个事务内完成,保证Session的有效性。但...

    SpringMVC与Hibernate整合所需jar

    <bean class="org.springframework.orm.hibernate5.support.OpenSessionInViewInterceptor"> ``` 在实际应用中,我们还需要编写相应的DAO(数据访问对象)和Service层来处理业务逻辑,同时使用注解或XML...

    spring中lazy=“true”的正常读取关联表(用opensessioninview)

    为了解决这个问题,Spring提供了一个过滤器 `OpenSessionInViewFilter` 或者 `OpenSessionInViewInterceptor`,通常简称为OSIV(Open Session In View)模式。 OSIV模式的核心思想是在Controller层和View层之间保持...

    Hibernate事务管理.

    Hibernate事务管理是数据库操作中的关键部分,尤其是在使用ORM(对象关系映射)框架如Hibernate时。事务管理确保了数据的一致性和完整性,防止在并发环境中出现数据不一致的情况。在没有Spring提供的Open Session In...

    HibernateSpring多数据库解决方案.doc

    在IT行业中,尤其是在Java开发领域,使用Spring框架与Hibernate整合是常见的做法,它们可以提供高效的数据访问和持久化服务。当面临多数据库的场景时,如何实现读写分离或者不同的业务逻辑对应不同的数据库,就显得...

    struts2+hibernate3 open session in view

    Hibernate3是第二代ORM框架,它允许开发者用面向对象的方式操作数据库,无需直接编写SQL语句。它通过Hibernate Configuration(配置文件)、Mapping Documents(对象-关系映射文件)和SessionFactory来管理数据库...

    使用Spring引起的错误

    ### 使用Spring引起的错误:Write ...通过以上解决方案和配置示例,可以有效地解决在使用Spring框架和Hibernate时出现的“Write operations are not allowed in read-only mode (FlushMode.NEVER)”这一问题。

    spring+mvc+hibernate集成redis缓存

    <bean class="org.springframework.orm.hibernate5.support.OpenSessionInViewInterceptor"> ``` 接下来,我们创建一个缓存管理器,以便在Spring中管理Redis缓存: ```xml <!-- 可选配置:缓存默认...

    Open_Session_In_View详解.doc

    在使用Hibernate进行对象持久化时,经常遇到的一个问题是关于懒加载(lazy loading)的处理。懒加载是一种优化技术,允许在真正需要某个关联对象的数据时才加载它们,而不是一开始就加载所有相关联的数据。这种策略...

    第30讲--Spring提供的CharacterEncoding和OpenSessionInView功能

    因此,在实际应用中,应结合具体需求谨慎使用,并考虑使用更现代的解决方案,如Spring Data JPA的Repository Rest Repositories,它们提供了更高效的透明数据访问。 总结一下,CharacterEncodingFilter和...

    spring面试大全

    在使用Hibernate时,Spring 可以帮助配置DataSource,创建SessionFactory,并通过HibernateDaoSupport类或HibernateTemplate进行操作。对于OpenSessionInView模式的问题,Spring 提供了OpenSessionInViewFilter或...

    spring面试题集

    当遇到OpenSessionInView问题时,可以使用OpenSessionInViewFilter或OpenSessionInViewInterceptor来解决。 Spring的事务管理提供了强大且灵活的机制,主要包括编程式和声明式两种方式: 1. 编程式事务管理:通过...

    spring面试题大全

    4. 解决OpenSessionInView问题,可以使用OpenSessionInViewFilter或OpenSessionInViewInterceptor,确保在一次HTTP请求中保持Hibernate Session的开放状态,以解决懒加载异常。 Spring的事务管理分为编程式和声明式...

    面试知识点总结--spring面试题大全.pdf

    为解决OpenSessionInView的问题,可以使用OpenSessionInViewFilter或OpenSessionInViewInterceptor,确保在HTTP请求的整个生命周期内保持Hibernate Session的打开状态,以避免数据持久化问题。 Spring的事务管理: ...

    spring面试题大全.doc

    为了解决OpenSessionInView问题,可以使用OpenSessionInViewFilter或OpenSessionInViewInterceptor。 5. **Spring事务管理** - **TransactionDefinition和TransactionStatus**:定义事务属性和表示当前事务状态,...

    java-spring面试题大全

    - 解决OpenSessionInView问题,可以使用OpenSessionInViewFilter或OpenSessionInViewInterceptor,确保在HTTP请求的整个生命周期中都保持数据库会话。 5. **Spring的事务管理**: - Spring提供了...

    spring面试题

    - **OpenSessionInView**:解决长时间请求导致的事务问题,可通过添加 OpenSessionInViewFilter 或 OpenSessionInViewInterceptor。 5. **Spring 事务管理** - **TransactionDefinition**:定义事务属性,如隔离...

Global site tag (gtag.js) - Google Analytics