除了使用OpenSessionInView模式,还有其他方法可以避免在Hibernate Web应用程序中出现LazyInitializationExceptions吗?使用OpenSessionInView会有什么不利影响吗?
这可以通过(至少)三种方式实现:
FetchMode.JOIN
,如果您正在使用Criteria API)获取属性fetchingHibernate.initialize(property)
)关于OpenSessionInView的缺点,您是否查看了this页面?
转向JBoss Seam。
Seam框架由Hibernate开发人员精心设计。
即使使用Open Session in View,您仍然可能会遇到一些问题。根据您的Web应用程序的复杂程度,Open Session In View无法处理所有情况。我在显示数据(在UI中)以及在quartz作业期间获取实体方面遇到了问题,例如发送电子邮件。
Hibernate已经智能地获取数据,更改提取模式将导致性能下降。不仅如此,而且您正在远离惯例,并将通过额外的配置细节混淆您的项目。
沃尔特