我想知道使用以下方法对实体进行更新有什么区别:
1)使用entityManager
@PersistenceContext
private EntityManager entityManager;
@Transactional
public void updateEntity(){
entityManager.merge(entity);
}
2)使用entityManager使用queryDSL
@PersistenceContext
private EntityManager entityManager;
private JPAQueryFactory query;
@PostConstruct
public void setUp(){
query = new JPAQueryFactory(entityManager);
}
@Transactional
public void updateEntity(Entity entity){
QEntity qEntity = QEntity.entity;
JPAUpdateClause update = new JPAUpdateClause(entityManager, qEntity);
update.set(qEntity.subject, entity.getSubject()).where(qEntity.id.eq(entity.getId())).execute();
}
它们都产生相同的结果。他们正确更新实体。但是,使用一个在另一个上的优势是什么?或者,更新实体的正确方法是什么?