假设我们有两个相互依赖的实体并为每个实体设置了DAO。
现在假设我们有两个线程从数据库中获取数据,Thread1要求Entity1Dao获取某些具有依赖字段初始化的对象,同时Thread2尝试使用Entity2Dao获取已检索的相同Entity2对象。
Entity1Dao创建EntityManager(em1)并检索数据,而Entity2Dao将创建不同的EntityManager(em2)以从数据库中获取查询对象。
问题: em2是否保持锁定直到em1关闭?如果没有,我们应该在“包含请求对象的其他entitymanager”上获得异常吗?
Entity1 -> * Entity2
Entity2
现在假设我们有两个线程从数据库中获取数据,Thread1要求Entity1Dao获取某些具有依赖字段初始化的对象,同时Thread2尝试使用Entity2Dao获取已检索的相同Entity2对象。
Entity1Dao创建EntityManager(em1)并检索数据,而Entity2Dao将创建不同的EntityManager(em2)以从数据库中获取查询对象。
问题: em2是否保持锁定直到em1关闭?如果没有,我们应该在“包含请求对象的其他entitymanager”上获得异常吗?
em
,则所有由em
管理的对象都将变为未管理状态。 - JB Nizet