`
zlpgm
  • 浏览: 2382 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Spring+Hibernate 配置一对多关联,及session关闭问题处理

阅读更多
Hibernate一对多关联映射时,出现failed to lazily initialize a collection of role: XXXXXX, no session or session was closed异常的解决方案:
一、配置一对多映射关联
    <set name="quAn" order-by="AN_CODE asc" lazy="true">
         <key column="AN_QU_ID" />
         <one-to-many class="com.study.entity.StudyExamQuAn"/>
     </set>
   注:1.order-by 后面的是字段名称而不是属性名称;
         2.key 的column为字段名称;
         3.lazy设置为true时为懒加载。

二、配置过滤器来解决出现 no session or session was closed 异常问题
    解决方法: 在项目的web.xml文件中加入如下代码:
<!--Spring解决加载延迟数据时hibernate session关闭问题, Spring将hibernate session绑定到每个请求线程,这样Spring的事物管理器就可以监听到-->  
    <filter> 
        <filter-name>OpenSessionInViewFilter</filter-name>
        <filter-class>
        org.springframework.orm.hibernate3.support.OpenSessionInViewFilter 
       </filter-class> 
       <init-param> 
            <param-name>singleSession</param-name> 
            <param-value>true</param-value> 
        </init-param> 
    </filter>   
    <filter-mapping>
  <filter-name>OpenSessionInViewFilter</filter-name>
  <url-pattern>/v/*</url-pattern>
</filter-mapping>
注:会出现org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER) - turn your Session into FlushMode.AUTO or remove 'readOnly' marker from transaction definition异常,要配置事务处理,否则会导致session处于只读状态而不能做修改、删除的动作 。

三. 配置Spring事务管理,以下采用拦截器的方式配置事务
    在applicationContext.xml文件中加入如下代码:
    <!-- 定义事务管理器 -->
<bean id="transactionManager"
  class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 用拦截器方式 处理事务 -->
  <bean id="transactionInterceptor"
        class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <property name="transactionManager" ref="transactionManager" />
        <!-- 配置事务属性 -->
        <property name="transactionAttributes">
            <props>
                <prop key="*">PROPAGATION_REQUIRED</prop>
            </props>
        </property>
    </bean>
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
        <property name="beanNames">
            <list>
                <value>*Dao</value>
            </list>
        </property>
        <property name="interceptorNames">
            <list>
                <value>transactionInterceptor</value>
            </list>
        </property>
    </bean>
    注:   <value>*Dao</value>为需要进行事务处理的bean名称,可以使用模糊匹配
分享到:
评论

相关推荐

    Struts+Spring+Hibernate开发实例.pdf

    Struts负责视图与控制器部分,Spring负责业务逻辑层及依赖注入,Hibernate负责数据持久层。下面将详细介绍文档提及的各个知识点。 **Struts框架** Struts是基于MVC设计模式的一个Web层框架。它将Web层分为Model...

    Strut+Spring+Hibernate框架的工作原理

    2. 灵活使用单向一对多关联 3. 不用一对一,用多对一取代 4. 配置对象缓存,不使用集合缓存 5. 一对多集合使用Bag,多对多集合使用Set 6. 继承类使用显式多态 7. 表字段要少,表关联不要怕多,有二级缓存撑腰 ...

    spring+struts2+hibernate框架双表增删改查

    通过@ManyToOne注解,可以定义User类中的Role属性,表示用户与角色的一对多关系。然后,通过Hibernate的Session接口进行CRUD操作,结合Spring的事务管理,确保数据的一致性。 此外,Struts2的Action类将处理HTTP...

    SSH(struts+spring+hibernate)面试题总结

    Hibernate支持多种关系映射,如一对一(OneToOne),一对多(OneToMany),多对一(ManyToOne),多对多(ManyToMany),通过注解或XML配置来声明这些关系。 在面试中,对于SSH的掌握不仅要求理解这些基本概念,还需要能够...

    JSF2.0+Spring+Hibernate实例代码

    **Spring**框架则是一个全面的企业级应用开发框架,涵盖了依赖注入(DI)、面向切面编程(AOP)、数据访问、事务管理、Web MVC等多个领域。在与JSF集成时,Spring常用于提供业务逻辑和服务层支持。例如,通过Spring...

    spring+structs+hibernate 框架的整合demo

    至于“省市区三级级联”实现,这通常涉及到多对多或者一对多的关系映射。在Hibernate中,我们可能需要定义两个实体类,比如Province、City和District,并在它们之间建立关联。在用户选择省时,根据省ID加载对应的市...

    使用Struts + Spring + Hibernate完成用户登陆(1).

    Struts、Spring和Hibernate是Java开发中非常经典的三大框架,它们各自在Web应用程序的不同层面上发挥作用,共同构建出高效、可维护的系统。Struts主要负责控制层,Spring提供了全面的依赖注入(DI)和面向切面编程...

    Spring+Hibernate+Struts工作原理

    1. 避免使用单向一对多关联,改为双向一对多。 2. 合理使用单向一对多关联。 3. 避免一对一关系,用多对一代替。 4. 配置对象缓存,避免使用集合缓存。 5. 一对多集合使用Bag,多对多集合使用Set。 6. 继承类使用...

    Java实例spring+hibernate+struts

    在文件"onetoone"中,我们可以推测这可能涉及到一对一(One-to-One)的关系映射,这是Hibernate中的一个概念,用于表示两个实体之间一对一的关联。在数据库设计中,一个实体可能与另一个实体存在一对一的对应关系,...

    struts+spring+hibernate俱乐部项目

    对于初学者而言,这个项目提供了实战SSH集成的宝贵机会,可以从中学习到如何将这三大框架有效地整合,以及如何处理实际问题,如一对多关系的映射、事务的控制、权限的管理等。 总结来说,“Struts+Spring+Hibernate...

    spring+hibernate代码实例集

    1.1 父子关系映射:在数据库中,表与表之间可能存在一对多、多对一或者一对一的关系。通过Hibernate的注解或XML配置,我们可以定义实体类之间的关联。Spring则可以协助管理这些关联对象,例如通过@Autowired注解自动...

    struts+spring+Hibernate

    1. 使用双向一对多关联,避免使用单向一对多。 2. 灵活运用单向一对多关联。 3. 不使用一对一关联,用多对一代替。 4. 配置对象缓存,避免使用集合缓存。 5. 一对多集合使用 Bag,多对多集合使用 Set。 6. 继承类...

    struts+spring+hibernate笔试面试常见问题

    - **使用双向一对多关联**:减少不必要的查询。 - **合理配置缓存策略**:根据实际情况选择合适的缓存策略。 - **使用 Set 和 Bag**:提高集合类型的性能。 - **继承策略**:使用显式多态减少数据库查询次数。 - **...

    Struts+spring+hibernate面试资料

    - **使用懒加载代理**:对于一对多或多对多的关系,Hibernate会在需要的时候动态创建代理对象。 - **OpenSessionInView模式**:这是一种解决懒加载异常的有效方案,通过确保Session在整个请求生命周期中保持打开状态...

    struts+spring+hibernate

    这种系统需要处理复杂的关系,如一对一、一对多、多对多,以及业务规则的验证,这就需要SSH框架的良好集成来实现。 在实际开发中,理解这三个框架的基本原理和它们之间的协作机制至关重要。Struts作为前端控制器,...

    spring+hibernate+struts文件上传下载

    在IT行业中,Spring、Hibernate和Struts是三个非常重要的...在提供的压缩包"demo"中,可能包含了实现这一功能的示例代码和配置文件,进一步学习和研究这些内容将有助于深化对Spring、Hibernate和Struts整合应用的理解。

    Struts + Spring + Hibernate 框架技术

    Hibernate支持多种关联关系的映射,包括单向多对一、单向一对多和双向一对多等。配置这些关联关系时,要考虑程序效率和业务需求。 此外,Hibernate提供了两种主要的查询方式: 1. HQL(Hibernate Query Language)...

    配置Spring+hibernate使用ehcache作为second-levelcache.docx

    " Spring+Hibernate 使用 Ehcache 作为 Second-Level Cache" Spring 和 Hibernate 是 Java Web 应用程序开发中两个非常重要的技术栈。Spring 是一个轻量级的控制反转(IoC)容器,提供了一个框架来管理 Java 对象...

    struts+spring+hibernate资料

    - **合理设计关联关系**:尽量使用双向一对多关联,避免单向一对多。 - **灵活使用关联类型**:适当采用多对一替代一对一。 - **配置缓存策略**:合理配置对象缓存,而非集合缓存。 - **集合类型选择**:一对多集合...

Global site tag (gtag.js) - Google Analytics