【发布时间】:2010-12-07 17:25:01
【问题描述】:
Spring 新手,这里是 @stackoverflow
我正在为分销商业务构建一个独立的库存和销售跟踪应用程序 (Apache Pivot/Spring/JPA/Hibernate/MySQL)。
到目前为止,我认为一切都是 CRUD,所以我计划有一个包含 @Transactional 一切的基类。
然后我的保存通用方法出现问题。 Spring中EntityManager的persist和merge方法有区别吗?
我尝试运行并调用 save 以进行插入和更新,它工作正常(我认为 spring 每次我调用我的 save 方法时都会自动刷新实体 // 看到休眠查询被记录,对吗?)。
@Transactional
public abstract class GenericDAO {
protected EntityManager em;
// em getter+@PersistenceContext/setter
public void save(T t) {
// if (t.getId() == null) // create new
// {
// em.persist(t);
// } else // update
// {
em.merge(t);
// }
}
}
顺便说一句,有了这样的设置,我不会对性能造成太大影响,对吧?就像调用 salesDAO.findAll() 来生成报告一样(不需要是事务性的,对吧?)。
谢谢!!!
【问题讨论】: