今天又花了一天时间做单位的搜索网站,主要是增加权限管理的功能,完成了一部分功能,今天的时间主要花在了,spring中调用hibernate的问题,碰到两个问题。一个是双向多对多关联问题,一个是设置lazy=true时的问题。关于第一个多对多问题,原来是把多对多关联,分解为两个一对多关联,但是在spring中,调用getHibernateTemplate保存对象总是报错,呵呵,错误记不得了。也始终没弄明白什么原因。后来想想就改用,组件类集合来处理多对多关联,也就是用composite-element来映射. 第二个问题当lazy=true时,使用的是延迟加载,如果想在读取对象时显示的调用关联的对象,则在hibernate中要用initialize来显示调用,但是在spring中就会报disconnected session的错。
上网找找资料,终于找到原因和解决的办法,在spring中通过getHibernateTemplate()来调用load和initialize,每一个getHibernateTemplate调用都会新开一个session,调用完就关闭了这个session.所以在第二次调用getHibernateTemplate().initialize来显示调用关联对象时就是报disconnected session的错。找到一个比较简单一点的解决的办法,就是用spring的OpenSessionInView. OpenSessionInViewFilter可以等到请求回到filte以后再把session关掉,在web.xml里面配置一下就好用了:
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
加上这段时就OK了~~
分享到:
相关推荐
### Hibernate延迟加载以及利用Spring #### 一、Hibernate延迟加载概念与原理 在理解Hibernate的延迟加载机制之前,我们首先需要了解什么是延迟加载。延迟加载(Lazy Loading)是一种设计模式,其核心思想是在真正...
然而,在实际应用中,我们常常会遇到一个名为“懒加载”(Lazy Loading)的问题,这在标题和描述中被提及。懒加载是一种优化策略,用于推迟对关联对象的加载,直到真正需要它们的时候。这种设计可以提高系统的性能,...
解决 JPA 中 Lazy 加载的问题,可以在 setUp() 函数中加入以下代码: ```java SessionFactory sessionFactory = lookupSessionFactory(request); Session hibernateSession = getSession(sessionFactory); ...
Spring 2.5 和 Hibernate 3.2 是两个在企业级Java应用开发中非常重要的框架。Spring 是一个全面的后端应用框架,提供依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)以及大量的集成支持。而Hibernate 则是...
标题和描述提到的“hibernate延迟加载解决”主要涉及如何理解和解决与之相关的常见问题。 **1. 延迟加载概念** 延迟加载是一种优化策略,它使得关联的对象在真正需要时才从数据库中加载,而不是在加载主对象时立即...
在IT行业中,SSH2是一个常见的框架组合,由Struts2、Spring和Hibernate三个组件组成,用于构建企业级的Java Web应用程序。在这个特定的项目中,开发者选择了SSH2的特定版本:Struts2.1.6、Spring2.5.6和Hibernate3.3...
- 应用懒加载(lazy loading)以提高性能,但要注意N+1查询问题。 - 使用第一级缓存和第二级缓存提高数据访问效率。 - 对敏感操作进行事务管理,确保数据一致性。 综上所述,"Spring4.0整合hibernate5.1.0.Final...
4. **延迟加载(Lazy Loading)**:只在真正需要时才加载关联的数据,避免了内存中的数据膨胀。 5. **实体生命周期管理**:Hibernate 3.0 提供了对对象的持久化状态的管理,包括瞬态、持久态、托管态和游离态,方便...
在开发Flex与Hibernate集成的应用时,延迟加载(Lazy Loading)是一个常见的挑战,因为Flex客户端无法直接理解和处理Hibernate的延迟加载机制。延迟加载是一种优化策略,它允许关联的对象在真正需要时才被加载,而...
- **懒加载(Lazy Loading)**:Hibernate支持关联对象的延迟加载,避免一次性加载大量数据。 - **批处理**:Spring可以设置批处理大小,批量处理数据库操作,提升效率。 7. **测试与调试** - **单元测试**:...
4. 在SSH框架中,使用spring提供的openSessionView:这种方法可以解决懒加载问题,但是也存在延长session关闭的时间,session的生命周期变长的缺点。 解决Hibernate懒加载问题的4种方式都有其优缺点,需要根据实际...
9. **懒加载(Lazy Loading)**:Hibernate 的特性,延迟加载关联对象,提高性能。 10. **级联操作(Cascading)**:允许在一个实体的保存、更新或删除操作影响到相关联的实体。 将 Spring MVC 和 Hibernate 结合...
Hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法是 Hibernate 框架中的一种常见问题。当我们在 Hibernate 中使用懒加载特性时,可能会遇到 LazyInitializationException 异常,这是因为 Hibernate 的 ...
在Spring中,通过`LocalSessionFactoryBean`配置SessionFactory,它可以加载Hibernate的配置文件,创建SessionFactory实例。 2. **SessionFactory的配置**: `hibernate.cfg.xml`文件定义了数据库连接、实体映射等...
在现代Java企业级应用开发中,Spring和Hibernate是两个不可或缺的框架。Spring以其强大的依赖注入和AOP能力,而Hibernate则是Java领域中广泛使用的对象关系映射(ORM)工具,能够简化数据库操作。本实践集主要探讨了...
SSH框架整合,即Struts2、Spring和Hibernate的集成,是Java Web开发中常见的技术栈。这个压缩包“struts2.3.2+spring4.1.6+hibernate4.2”包含了这三个框架的特定版本,适用于构建一个功能完备、松耦合的Web应用程序...
【标题】:“Hibernate、Spring和Struts工作原理及使用理由” 【内容】: Hibernate是一个流行的Java持久化框架,它的核心工作原理主要包括以下步骤: 1. **读取并解析配置文件**:Hibernate通过读取hibernate....
- Hibernate支持延迟加载(Lazy Loading),提高性能,只在需要时加载数据。 - 使用SessionFactory和Session接口进行数据库会话管理,支持HQL(Hibernate Query Language)和SQL进行查询。 3. **Struts2框架**: ...
- **解决延迟加载问题**:在使用延迟加载时,需要注意事务的管理,以避免在事务结束之后尝试访问关联对象时出现的异常。 #### 结语 通过上述步骤,我们可以成功地构建一个基于Struts 1.2、Spring 2.0和Hibernate ...