是否可以分离Hibernate实体,以便对象的更改不会自动保存到数据库中?

new*_*bie 51 java persistence hibernate

我有Hibernate实体,我必须转换为JSON,我必须在实体中翻译一些值,但是当我翻译值时,这些值会立即保存到数据库,但我不想将这些更改保存到数据库中.这个问题是否有任何解决方法?

axt*_*avt 46

您可以通过调用分离实体Session.evict().

其他选项是在转换值之前创建实体的防御副本,或者在代码中使用DTO而不是实体.我认为这些选项更优雅,因为它们不会将转换耦合到JSON和持久层.

  • 在JPA的情况下,您可以使用:[`EntityManager.detach(object)`](http://docs.oracle.com/javaee/7/api/javax/persistence/EntityManager.html#detach%28java.lang.对象%29) (13认同)
  • 我一直在为此目的使用DTO.使用防御性副本是个好主意,但维护变得越来越困难,人们认为新对象是一个受管理的,但实际上它实际上是一个本地副本. (2认同)