`
Aga
  • 浏览: 218655 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

hibernate中lazy加载所引发的问题

阅读更多
可能原因:
当<class>元素或者<set>元素的lazy属性为true时,load() or get() or find()加载这些对象时,Hibernate不会马上产生任何select语句,只是产生一个Obj代理类实例,只有在session没有关闭的情况下运行Obj.getXxx()时才会执行select语句从数据库加载对象,如果没有运行任何Obj.getXxx()方法,而session已经关闭,Obj已成游离状态,此时再运行Obj.getXxx()方法,Hibernate就会抛出"Could not initialize proxy - the owning Session was closeed"的异常,是说Obj代理类实例无法被初始化。然而想在Session关闭之前不调用Obj.getXxx()方法而关闭Session之后又要用,此时只要在Session关闭之前调用Hibernate.initialize(Obj)或者Hibernate.initialize(Obj.getXxx())即可,net.sf.hibernate.Hibernate类的initialize()静态方法用于在Session范围内显示初始化代理类实例。

解决方法:
所以,在映射文件中,将lazy属性设为false即可,
<class name="cssduty.table.Team" table="team" catalog="duty" lazy="false">

转自:http://www.iteye.com/topic/164219
分享到:
评论
2 楼 Aga 2008-09-16  
lazy属性的默认值就是true,另外load()和get()之间的区别在于:get()会立即加载,load会延迟(对于hibernate3的情况而言)。
1 楼 Aga 2008-03-09  
web.xml
...
<filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>hibernateFilter</filter-name>
    <url-pattern>*.html</url-partter>
</filter-mapping> 
...

通过该方法,就可以把session绑定到线成上,这样在service层调用完毕session之后就不会直接关闭session,以保证在jsp页面中也可以调用。

相关推荐

    Hibernate lazy延迟加载

    在Java的持久化框架Hibernate中,懒加载(Lazy Loading)是一种重要的优化策略,它的核心思想是“延迟加载”或“按需加载”。默认情况下,当一个实体被加载时,并不会立即加载其关联的对象或集合,而是在真正需要...

    Hibernate lazy加载FOR Connection

    标题中的“Hibernate lazy加载FOR Connection”指的是Hibernate框架中的一种特性,即懒加载(Lazy Loading)。在Hibernate中,懒加载是一种优化策略,它推迟对关联对象的加载,直到真正需要使用这些对象时才进行加载...

    Hibernate延时加载与lazy机制.doc

    Hibernate的延迟加载(Lazy Loading)和懒加载机制(Lazy Initialization)是优化ORM框架性能的重要策略。这个机制的主要目的是提高程序的效率,减少不必要的数据库交互,只在真正需要数据时才去加载它们。以下是对...

    hibernate 延迟加载深入剖析

    - **并发问题**:如果在多线程环境中不恰当地使用延迟加载,可能会引发并发问题。 #### 五、总结 Hibernate的延迟加载是一项强大的功能,可以帮助开发者构建高性能的应用程序。通过合理配置延迟加载,不仅可以优化...

    理解Hibernate中PO的代理类

    因此,懒加载并不总是最优选择,需要根据实际应用的需求和场景来决定是否启用懒加载以及如何处理懒加载引发的问题。 在Hibernate中,理解代理类的工作原理和配置懒加载机制对于优化数据访问性能至关重要。通过配置...

    Hibernate延迟加载

    **延迟加载**(Lazy Loading)是Hibernate框架中的一个重要特性,主要用于优化数据库操作,减少不必要的数据加载,从而提升应用程序的性能。在传统的Eager Loading(急切加载)模式下,一旦加载了一个对象,与之相关的...

    hibernate

    根据提供的文件信息,我们可以深入探讨Hibernate框架中的几个关键概念,特别是`fetch`, `lazy`, `cascade`, 和 `inverse`关键字的使用与理解。这四个概念在处理对象关系映射(ORM)时非常重要,尤其是在Java环境下...

    浅谈解决Hibernate懒加载的4种方式

    综上所述,解决Hibernate懒加载问题的四种方式各有优劣。显式初始化和修改对象关系映射文件能够直接针对问题,但可能会牺牲性能。使用过滤器和openSessionView则是通过控制session的生命周期来避免懒加载异常,但...

    Hiberbate 3延迟加载(Lazy)介绍

    在Hibernbate配置文件(如`hibernate.cfg.xml`或`.hbm.xml`)中,可以通过设置`lazy="true"`来启用延迟加载。例如: ```xml &lt;class name="com.neusoft.entity.Usertable" lazy="true"&gt; ``` 对于集合属性,同样可以...

    hibernate文档总结,技术汇总,PDF版的,hibernate简明参考文档

    12. **版本控制**: Hibernate通过乐观锁或悲观锁机制实现对象版本控制,防止并发更新引发的数据不一致问题。 13. **关联映射**: Hibernate支持一对一、一对多、多对一和多对多的关联映射,允许对象之间建立复杂的...

    J2EE系统之-hibernate学习总结

    - **懒加载(Lazy Loading)**:默认情况下,Hibernate采用懒加载策略,只在真正需要关联数据时才加载,从而避免不必要的数据库交互。 - **急加载(Eager Loading)**:可以在特定场景下启用,一次性加载所有关联...

    懒加载异常解决.docx

    例如,在Hibernate中查询一个对象并尝试访问其延迟加载的关联对象时,如果没有正确的Session管理机制,就可能会引发此类异常。 **具体原因包括:** 1. **Session过早关闭:** 如果在事务或请求结束时关闭了Session...

    Hibernate映射导致的几个异常

    标题与描述概述的知识点主要集中在Hibernate映射过程中可能遇到的各种异常情况,这涉及到数据库与对象模型之间的映射问题,以及Hibernate框架在处理这些映射时可能产生的错误。下面将对这些异常进行详细的解释和分析...

    Hibernate双向一对一关联映射(注解版)

    1. **懒加载与级联操作**:可以使用`fetch = FetchType.LAZY`实现懒加载,减少不必要的数据库查询。同时,`cascade`属性可以设置级联操作,如`CascadeType.ALL`会将删除、保存等操作级联到关联对象。 2. **避免循环...

    SpringBoot-SpringData-懒加载

    在Spring Boot中,如果使用Hibernate作为JPA的实现,需要在配置文件(application.properties或application.yml)中开启Open Session In View(OSIV)过滤器,以解决懒加载在HTTP请求结束后引发的...

    Hibernate part 8:一对多关联关系映射

    同时,注意避免N+1查询问题,即在获取父实体时因懒加载引发的大量额外查询,可以通过预加载(eager fetching)或使用JOIN查询来解决。 在提供的链接中,可以找到更多关于Hibernate一对多关联的实例和详细解释,包括...

    Hibernate文档

    1. 销毁延迟(Lazy Loading):一种优化技术,延迟加载关联对象,直到真正需要时才加载。 2. 集合映射:处理一对多、多对一、多对多等关系映射。 3. 缓存机制:通过一级缓存(Session缓存)和二级缓存(Region缓存)...

    flexjson-2.1.zip

    在Hibernate中,延迟加载(Lazy Loading)是一种性能优化策略,它只在真正需要时才加载关联的对象,而不是在初始化实体时一次性加载所有数据。然而,当尝试将这些延迟加载的对象转换为JSON格式时,由于JSON序列化...

    西安领航核心项目Hibernate部分重点、难点总结

    需要注意,如果在Session关闭后尝试访问未加载的关联对象,会引发异常。 ### 多对一单向关联的级联配置 级联配置通过`cascade`标签控制,可设置为`none`、`save-update`、`delete`、`all`等。例如,级联删除允许在...

    一次hibernate的优化实践

    - 调整懒加载(Lazy Loading)和急加载(Eager Loading)策略,避免因延迟加载引发的额外查询。 - 优化关联关系,减少多对多关系,考虑使用一对一或一对多替代。 - 使用@BatchSize注解控制批量获取关联对象,减少...

Global site tag (gtag.js) - Google Analytics