使用Hibernate和Spring从DTO对象更新实体对象的最佳方法

时间:2018-06-02 07:36:24

标签: spring hibernate

首先解释一下背景。我有后端Java(Spring / Hibernate)应用程序,可以通过Rest客户端访问。 问题:由于API作为RestApi公开,我从客户端获取DTO对象,其中包含需要更新的实体的ID。

当前方法:我基于ID从DB获取实体,并将其从持久化上下文中分离,将DTO对象转换为实体对象, 然后将它发送到DAO,我再次从DB获取实体(因为DAO可以由其他内部类直接调用)然后再次分离它,然后调用合并操作。 因此,对于每次更新调用,hibernate将触发3个select语句和1个update语句。有什么方法可以减少选择呼叫的次数。

1 个答案:

答案 0 :(得分:0)

如果你的所有查询都在同一个会话中完成,那么hibernate不应该为每个对存储库的请求再次加载实体,只需在服务类上使用@Transactional注释

另一个方法是使用hibernates二级缓存: