我在EJB2.0
层上使用事务
,并从那里调用DAO
层,其中对db进行hibernate调用。
我现在遇到的问题是,hibernate 正在对数据库进行多次调用,因为我设置了 lazy="false"
,现在我尝试更改 lazy="true"
但现在我们有了自己的:
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
错误消息。
我对SO
做了一些研究,发现解决方案可能是
<prop key="hibernate.default_batch_fetch_size">30</prop>
<prop key="hibernate.jdbc.fetch_size"></prop>
我的问题是 fetch_size 的默认大小是多少,以及这是否是解决此问题的正确方法。
我想要做的就是确保应用程序不会多次调用数据库来运行所有这些 N
查询,因为现在在页面之间导航非常痛苦,并且使应用程序非常慢每次点击页面,都会在后台运行 N
个查询,这会增加应用程序加载时间。
更新
以下是如何设置交易:
* @hibernate.class table="SCHEDULE_ENTRY" discriminator-value="task" lazy="true"
* @hibernate.discriminator column="KIND" length="4"
非常感谢任何提高 hibernate 性能的建议。
最佳答案
在关闭 session 之前访问对象的成员。这是主要问题。
关于java - 关于 Hibernate LazyInitialization 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9197473/