是否可以分离休眠实体,以便对对象的更改不会自动保存到数据库中?
2022-08-31 16:44:25
我有Hibernate实体,我必须将其转换为JSON,并且我必须在实体中转换一些值,但是当我转换值时,这些值会立即保存到数据库中,但我不想将这些更改保存到数据库中。此问题是否有任何解决方法?
我有Hibernate实体,我必须将其转换为JSON,并且我必须在实体中转换一些值,但是当我转换值时,这些值会立即保存到数据库中,但我不想将这些更改保存到数据库中。此问题是否有任何解决方法?
您可以通过调用 Session.evict()
来分离实体。
其他选项是在转换值之前创建实体的防御性副本,或者使用 DTO 而不是该代码中的实体。我认为这些选项更优雅,因为它们不会将转换为JSON和持久层。
我还将休眠实体转换为 JSON。
关闭会话时,您无法延迟加载对象,这是一件坏事。因此,您可以使用
hSession.setDefaultReadOnly(true);
并在完成 JSON 操作后关闭会话。