Java 未同步的EntityManager如何从数据库中读取数据?
我正在学习EJB/JPA,我想知道这个代码段应该如何工作:Java 未同步的EntityManager如何从数据库中读取数据?,java,jpa,ejb,entitymanager,Java,Jpa,Ejb,Entitymanager,我正在学习EJB/JPA,我想知道这个代码段应该如何工作: @Stateful public class Sample { @PersistenceContext(type=PersistenceContextType.EXTENDED, synchronization=SynchronizationType.UNSYNCHRONIZED, unitName="..") EntityMana
@Stateful
public class Sample {
@PersistenceContext(type=PersistenceContextType.EXTENDED,
synchronization=SynchronizationType.UNSYNCHRONIZED,
unitName="..")
EntityManager em;
public Employee get(int id){
retirm em.find(Employee.class , id);
}
// ...
}
它是一个有状态bean,因此默认情况下,它应该包装在容器管理器事务中(必需)
但另一方面,非同步管理器被称为不加入事务,除非显式加入
那么,如果它不加入tx,它如何从DB中获取数据?它是否可能包含脏的/幻影的读数等
此代码段来自“Pro JPA 2”。来自JPA 2.1规范的3.1.1:
find
方法(前提是在没有锁的情况下调用它,或者使用LockModeType.NONE
调用它)
在事务中不需要调用getReference
方法。如果实体经理
在使用事务范围的持久性上下文时,将分离生成的实体;如果
如果使用具有扩展持久性上下文的实体管理器,则将对其进行管理
酷,谢谢!但是,对于这样的带读/不带读事务,隔离级别是什么?