java - 避免 Hibernate LazyInitializationExceptions 的策略

标签 java database hibernate

除了使用 OpenSessionInView 模式之外,还有其他方法可以避免 Hibernate Web 应用程序中的 LazyInitializationExceptions 吗?使用 OpenSessionInView 有什么缺点吗?

最佳答案

在我们的 Web 应用程序上工作时,我们通常会事先决定 View 页面中需要哪些对象/字段,并确保在分派(dispatch)到 View 之前所有对象都已从模型中正确初始化。

这可以(至少)通过三种方式实现:

  1. fetching使用急切策略的属性(即使用 FetchMode.JOIN,如果您使用 Criteria API )
  2. 显式初始化属性(即使用 Hibernate.initialize(property))
  3. 通过调用适当的属性访问器隐式初始化属性

关于OpenSessionInView的缺点,你查过了吗this页?

关于java - 避免 Hibernate LazyInitializationExceptions 的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/215745/

相关文章:

database - 用户离开时如何正确插入时间( user_left 和 user_joined 具有相同的值)

java.lang.IllegalStateException : No transactional EntityManager available

java - 每个类层次结构继承使用一个表时的 hibernate 获取策略

java - 在网络浏览器中显示输出

java - 字符串索引越界异常错误

java - 如果我尝试更改值,我的 JSpinner 会跳转到 1970

MySQL 返回表名和数据库中所有表的字段数据

MySQL 许多 'and' 语句

java - Hibernate连接设计

java - 从 JFrame 获取输入