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 (OSIV) 模式是一种在基于Hibernate的Web应用程序中处理持久化数据的策略,它允许在视图层(例如JSP页面)中安全地访问延迟加载的对象,而无需担心Session已关闭的问题。以下是关于这个模式及其...
解决方法是确保在Session关闭前完成懒加载操作,或考虑使用Eager Loading或Open Session In View模式。 理解并有效地处理这些异常对于Java开发者来说至关重要,它们能帮助我们诊断并修复问题,保证应用程序的稳定性...
为避免此问题,可以考虑在查询时显式加载关联的数据,或者使用开放会话视图(Open Session In View)模式。另外,使用`@Transactional`注解或在服务层方法中管理事务可以帮助保持会话的生命周期。 2. **`...
然而,如果在服务层(Service layer)或数据访问层(DAO layer)关闭了Session,然后试图在应用层(如视图层)进行懒加载,Hibernate会抛出`session already closed Exception`,因为此时Session已经不再有效。...
当你尝试在Controller层或者视图层访问懒加载的属性时,如果Session已经关闭("no Session..."错误),就会抛出`org.hibernate.LazyInitializationException`。这是因为懒加载的代理对象需要Session来执行数据库查询...
解决方案:理解并合理使用Open Session in View(OSIV)模式,或者在查询时显式调用`Hibernate.initialize()`方法。另外,可以考虑将懒加载改为急加载(Eager Fetching)。 六、HQL查询错误 错误表现:执行HQL语句...
为解决此问题,可以在Controller层或Service层提前加载关联数据,或者使用Hibernate的“开放Session视图”(Open Session in View)模式。 3. **事务管理**:延时加载需要在一个有效的Hibernate Session内进行。在...
为了避免这种情况,我们可以使用Open Session in View(OSIV)模式或者在查询时显式启用急切加载。 总的来说,选择合适的抓取策略和恰当使用懒加载是优化Hibernate应用性能的重要手段。开发者应根据业务场景灵活...
此时,如果存在延迟加载的对象,其加载动作还没来得及执行,Session就已经被销毁,那么在后续尝试访问这些延迟加载属性时,就会抛出异常,提示对象已经被托管给事务,无法再执行数据库操作。 为了解决这个问题,...
8. Hibernate的延迟加载机制允许只有在真正需要数据时才加载数据,但它与Session关闭存在矛盾,解决此矛盾的方法包括使用Open Session in View模式等。 9. MyBatis是一个持久层框架,它使用XML配置或注解来定义SQL...
如果使用Hibernate作为JPA的实现,需要在配置文件(application.properties或application.yml)中开启Open Session In View(OSIV)过滤器,以解决懒加载在HTTP请求结束后引发的“DetachedEntityException”异常。...
为避免这种情况,可以在需要时尽早初始化关联数据,或者使用Open Session in View(OSIV)模式。 5. **事务隔离级别**:Spring支持多种事务隔离级别,如READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、...
2. **异常处理:**如果使用`load()`方法加载的对象不存在于数据库中,Hibernate会抛出`ObjectNotFoundException`异常;而`get()`方法则直接返回`null`。 3. **懒加载支持:**`load()`方法默认支持懒加载,即只有在...
- Java通过异常处理机制来处理程序中的错误,包括抛出异常、捕获异常和处理异常。 - **CheckedException**: - 需要在方法签名中声明抛出,编译器强制检查。 - 通常表示可以预见并应适当处理的情况。 - **Unchecked...