`

hibernate open session in view 抛出异常解决方法

阅读更多
http://www.blogjava.net/dreamstone/archive/2007/07/29/133074.html

在使用open-session-in-view的时候,如果使用不当,有可能抛出两种异常
1,NonUniqueObjectException
2,在配合spring使用的时候会可能会抛出org.springframework.dao.InvalidDataAccessApiUsageException

先说1,这个异常的抛出原因和解决办法见这里:
javaeye上有了很好的事例:http://www.javaeye.com/topic/11581
解决办法可以用merge,也可以别的办法。
出现的原因,可以参考一下我前边的文章中将merge和update的区别的内容。
http://www.blogjava.net/dreamstone/archive/2007/07/29/133071.html

2的解决办法:在这里
springside的一篇文章做了详细说明
http://calvin.blog.javascud.org/post/46.htm

好了,现在问题解决了,但关于open-session-in-view的使用还有一些探讨,是否应该使用,使用的好处与坏处。
见这两篇jdon上的文章:
http://www.jdon.com/jivejdon/thread/22374.html
http://www.jdon.com/jivejdon/thread/28955.html
分享到:
评论

相关推荐

    Open Session in View模式.PPT

    Open Session in View (OSIV) 模式是一种在基于Hibernate的Web应用程序中处理持久化数据的策略,它允许在视图层(例如JSP页面)中安全地访问延迟加载的对象,而无需担心Session已关闭的问题。以下是关于这个模式及其...

    Java常见异常集-Java,Hibernate,Tomcat异常

    解决方法是确保在Session关闭前完成懒加载操作,或考虑使用Eager Loading或Open Session In View模式。 理解并有效地处理这些异常对于Java开发者来说至关重要,它们能帮助我们诊断并修复问题,保证应用程序的稳定性...

    Hibernate映射导致的几个异常

    为避免此问题,可以考虑在查询时显式加载关联的数据,或者使用开放会话视图(Open Session In View)模式。另外,使用`@Transactional`注解或在服务层方法中管理事务可以帮助保持会话的生命周期。 2. **`...

    Hibernate事务管理.

    然而,如果在服务层(Service layer)或数据访问层(DAO layer)关闭了Session,然后试图在应用层(如视图层)进行懒加载,Hibernate会抛出`session already closed Exception`,因为此时Session已经不再有效。...

    集成spring的hibernate懒加载

    当你尝试在Controller层或者视图层访问懒加载的属性时,如果Session已经关闭("no Session..."错误),就会抛出`org.hibernate.LazyInitializationException`。这是因为懒加载的代理对象需要Session来执行数据库查询...

    Hibernate配置常见错误

    解决方案:理解并合理使用Open Session in View(OSIV)模式,或者在查询时显式调用`Hibernate.initialize()`方法。另外,可以考虑将懒加载改为急加载(Eager Fetching)。 六、HQL查询错误 错误表现:执行HQL语句...

    【北大青鸟内部教程】jsp中关于Hibernate延时加载的问题

    为解决此问题,可以在Controller层或Service层提前加载关联数据,或者使用Hibernate的“开放Session视图”(Open Session in View)模式。 3. **事务管理**:延时加载需要在一个有效的Hibernate Session内进行。在...

    hibernate抓取策略和懒加载案例

    为了避免这种情况,我们可以使用Open Session in View(OSIV)模式或者在查询时显式启用急切加载。 总的来说,选择合适的抓取策略和恰当使用懒加载是优化Hibernate应用性能的重要手段。开发者应根据业务场景灵活...

    ssh_inte2模板常用方法&延迟加载问题

    此时,如果存在延迟加载的对象,其加载动作还没来得及执行,Session就已经被销毁,那么在后续尝试访问这些延迟加载属性时,就会抛出异常,提示对象已经被托管给事务,无法再执行数据库操作。 为了解决这个问题,...

    JAVA面试题(下).pdf

    8. Hibernate的延迟加载机制允许只有在真正需要数据时才加载数据,但它与Session关闭存在矛盾,解决此矛盾的方法包括使用Open Session in View模式等。 9. MyBatis是一个持久层框架,它使用XML配置或注解来定义SQL...

    SpringBoot-SpringData-懒加载

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

    无处不在的Spring AOP事务及踩过的坑

    为避免这种情况,可以在需要时尽早初始化关联数据,或者使用Open Session in View(OSIV)模式。 5. **事务隔离级别**:Spring支持多种事务隔离级别,如READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、...

    SSH常用面试题

    2. **异常处理:**如果使用`load()`方法加载的对象不存在于数据库中,Hibernate会抛出`ObjectNotFoundException`异常;而`get()`方法则直接返回`null`。 3. **懒加载支持:**`load()`方法默认支持懒加载,即只有在...

    大唐JAVA笔试题

    - Java通过异常处理机制来处理程序中的错误,包括抛出异常、捕获异常和处理异常。 - **CheckedException**: - 需要在方法签名中声明抛出,编译器强制检查。 - 通常表示可以预见并应适当处理的情况。 - **Unchecked...

Global site tag (gtag.js) - Google Analytics