hibernate 延迟加载问题

来源:百度知道 编辑:UC知道 时间:2024/06/10 17:00:08
已经把lazy改成 false了, 而且在本机执行的时候都完全没有错,传到空间的时候结果报错了
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: org.jpxx.wallpaper.persistence.hbm.EndUser.questionItems, no session or session was closed
问一下有没有办法解决,这个和空间配置没什么关系吧

使用Hibernate提供的延迟加载机制。这种初始化策略只在一个对象调用它的一对多或多对多关系时才将关系对象读取出来。这个过程对开发者来说是透明的,而且只进行了很少的数据库操作请求,因此会得到比较明显的性能提升。这项技术的一个缺陷是延迟加载技术要求一个Hibernate会话要在对象使用的时候一直开着。这会成为通过使用DAO模式将持久层抽象出来时的一个主要问题。为了将持久化机制完全地抽象出来,所有的数据库逻辑,包括打开或关闭会话,都不能在应用层出现。最常见的是,一些实现了简单接口的DAO实现类将数据库逻辑完全封装起来了。一种快速但是笨拙的解决方法是放弃DAO模式,将数据库连接逻辑加到应用层中来。这可能对一些小的应用程序有效,但是在大的系统中,这是一个严重的设计缺陷,妨碍了系统的可扩展性。