QueryDsl和EntityManager使用两者进行更新

时间:2017-04-17 17:01:13

标签: spring jpa querydsl

我想知道使用以下方法对实体进行更新有什么区别:

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();
}

它们都产生相同的结果。他们正确更新实体。但是,使用一个在另一个上的优势是什么?或者,更新实体的正确方法是什么?

0 个答案:

没有答案