作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是JPA
的新手,我正在阅读Pro JPA 2 Mastering the java Persistence API
并且我已经阅读了以下段落:
a flush of the persistence context could occur at any time if the persistence provider deems it necessary.
我的问题
认为有必要
?认为有必要
?我想详细了解这句话的含义认为有必要
。欢迎任何帮助,提前致谢。
最佳答案
这样的场景如下 JPA 2.1 Specification - Section 3.10.8 Queries and Flush Mode - 持久化提供者负责确保持久化上下文中所有实体状态的所有更新(可能会影响查询结果)对于查询处理都是可见的。
虽然它依赖于实现,但您可以注意到以下行为,其中 hibernate 作为持久性提供程序决定在触发 HQL 之前刷新,因为持久性上下文中的状态可能会影响查询结果。
因此,使用 Hibernate 作为持久性提供者,
Employee
实体并对其调用 persist
方法。insert
语句,因为 session 充当缓存后面的事务写入,并尝试将刷新推迟到最后一刻。使用实体管理器的员工数量
。select count(*) from employee JPQL
之前触发一条插入语句来保留新创建的员工。 因此,在这种情况下,它决定刷新状态,因为员工对象的插入可能会影响 JPQL 查询的结果。
关于java - 理解 `Pro JPA 2 Mastering the java Persistence API` 中的一段话吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49474741/
我是一名优秀的程序员,十分优秀!