分离实体和托管实体

35

"脱离状态实体"是什么意思?在事务期间如何将托管实体转换为脱离状态实体?

3个回答

36

一个脱离的实体是指其状态不会被JPA提供程序反映的实体。

换句话说,如果更改它的状态(例如通过setter方法),这些更改将不会保存到底层数据库中,因为JPA提供程序不必“观察”此类实体。

如果实体E1是托管实体,则可以调用非常合理命名的方法EntityManager#detach(E1)使其脱离。您还可以使用EntityManager#clear()来清除整个PersistenceContext并有效地使所有托管实体脱离。


2
请注意,并非所有JPA实现的版本都提供分离(detach)功能。 - Nuno Furtado

10
实际上,“Detached entity”是什么意思? Detached entity对象是一种特殊状态的对象,它们不由任何“EntityManager”管理,但仍代表数据库中的对象。阅读更多信息,请单击此处source
如何在事务期间将托管实体转换为分离实体? 请单击此处查看

9

这里可以了解JPA实体的生命周期。

例如,在序列化或关闭持久化上下文后,实体可能会被分离。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接