假设我们有一个为他们每个人的两个实体依赖于彼此和DAO关于线程安全和JPA的EntityManager
Entity1 -> * Entity2
Entity2
现在,我们有两个线程是拉从数据库中的一些数据,线程1问Entity1Dao得到一些对象初始化了依赖字段,同时Thread2尝试使用Entity2Dao获得相同的Entity2对象(已经检索到)。
Entity1Dao创建EntityManager(em1)并检索数据,Entity2Dao将创建不同的EntityManager(em2)以从数据库中获取查询对象。
问题:在em1关闭之前em2是否锁定?如果不是,我们应该在“包含请求对象的其他entitymanager”上得到例外吗?
感谢您的回答,您是否也可以回答这个问题。假设我有一些Object(附加)表单实体管理器,后来关闭了em,那个对象是否仍然连接? – vach
不可以。如果关闭'em',那么'em'管理的所有对象都将不受管理。 –
我试图为我的应用程序实现数据访问层,并且只有这样,我才发现使它成为线程安全的方法是使用entityManager每个事务,因此如您所说,从dao返回的任何对象都将变为非托管。有没有更好的方法来做到这一点? – vach