我是JPA
的新手,我正在阅读Pro JPA 2 Mastering the java Persistence API
,我已阅读以下段落:
如果有的话,可以随时发生持久化上下文的刷新 持久性提供者认为有必要。
我的问题
deems it necessary
?deems it necessary
?我想理解这句话deems it necessary
的详细含义。欢迎任何帮助,提前谢谢。
答案 0 :(得分:2)
其中一种情况是根据JPA 2.1 Specification - Section 3.10.8 Queries and Flush Mode - The persistence provider is responsible for ensuring that all updates to the state of all entities in the persistence context which could potentially affect the result of the query are visible to the processing of the query.
虽然它是依赖于实现的,但你可以注意到hibernate的下面行为,因为持久性提供程序决定在触发HQL之前刷新,因为持久化上下文中的状态可能会影响查询结果。
因此,将Hibernate作为持久性提供程序,
Employee
实体并在其上调用persist
方法。insert
语句,因为会话充当缓存后面的事务写入,并尝试将刷新推迟到最后一刻。count of employees using the entityManager
。select count(*) from employee JPQL
之前保留新创建的员工。 所以在这种情况下,它决定刷新状态,因为插入employee对象可能会影响JPQL查询的结果。