Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于Hibernate懒散初始化错误_Java_Performance_Hibernate_Orm - Fatal编程技术网

Java 关于Hibernate懒散初始化错误

Java 关于Hibernate懒散初始化错误,java,performance,hibernate,orm,Java,Performance,Hibernate,Orm,我在EJB2.0层上使用transactions,并从那里调用DAO层,其中我对db进行hibernate调用 我现在遇到的问题是hibernate正在对数据库进行多次调用,因为我设置了lazy=“false”,现在我试图更改lazy=“true”,但现在我得到了自己的: org.hibernate.LazyInitializationException:无法初始化代理 -所属会话已关闭 错误消息 我对做了一些研究,发现解决方案是可行的 <prop key="hibernate.defa

我在
EJB2.0
层上使用
transactions
,并从那里调用
DAO
层,其中我对db进行hibernate调用

我现在遇到的问题是hibernate正在对数据库进行多次调用,因为我设置了
lazy=“false”
,现在我试图更改
lazy=“true”
,但现在我得到了自己的:

org.hibernate.LazyInitializationException:无法初始化代理 -所属会话已关闭

错误消息

我对
做了一些研究,发现解决方案是可行的

 <prop key="hibernate.default_batch_fetch_size">30</prop>
 <prop key="hibernate.jdbc.fetch_size"></prop>
如果您有任何改进hibernate性能的建议,我们将不胜感激

org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
当您尝试访问尚未初始化且对象未绑定到会话(分离)的对象(代理)的成员时,会出现该异常。在考虑更改批处理大小之前,必须首先解决该问题

要解决该问题,请确保您要访问的所有属性都已初始化。 这取决于您可以使用延迟加载的事务/会话配置。如果您发布事务/会话配置,这将非常有用

您可以使用
Hibernate.initialize()
来初始化成员,但我建议只在需要时更改抓取策略

看一看


我希望我能提供帮助:)

在关闭会话之前访问对象的成员。这是主要的问题。

更新了关于如何调用事务的详细信息。这里的问题是,我使用ejb事务并从ejb调用dao,因此会话的维护由ejb事务负责,并且存在多个正在运行的嵌套查询,因此不确定延迟异常的确切位置被扔了。
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed