我正在使用JPA spring开发Web应用程序 . 我的项目层结构是web - > service - > DAO - > GenericDAO . 所有类都被实例化为singleton spring bean . GenericDAO使用@PersistenceContext注入entityManager实例 .
我的应用程序在http会话中获取存储中的域实体 . 在对这些实体执行任何db操作之前,需要使用merge将其重新附加到实体管理器 . 我想知道将实体合并到实体管理器的最佳方法 . 目前每次调用事务方法时,我都调用genericDAO.merge(object) . 例如
@Transactional
public void addProducts() {
Order order = getOrderFromHttpSession();
genericDAO.merge(order);
// delete existing products
// add new products
// other db operations.
}
有没有其他更好的方法来做到这一点 . 有没有任何设计模式?
1 回答
我认为这是最好的方式 . 出于这个原因,JPA提供了这种方法 .
另一种方法是em.find(someKey)并复制每个已更改的信息 . (但我不建议你这样做) . 最佳实践是您的解决方案 .