1
가정이 같은 간단한 JPA 엔티티 클래스 :업데이트를위한 JPA 2 TypedQuery를 사용
@Entity(name="TASK")
public class Task implements Serializable {
/* getters/setters omitted for brevity */
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
private Date done;
}
어떻게 내가 JPA 2 TypedQuery
, CriteriaQuery
및 메타 모델은 간단한 UPDATE TASK SET done = ? WHERE id = ?
SQL 쿼리에 해당하는 작업을 수행 할 수 있습니까? 내가 인터넷에서 찾을 수있는 모든이가 대신 TypedQuery
함께 할 수있는이
Query q = em.createQuery(
"UPDATE TASK SET done = :date WHERE id = :id");
q.setParameter(/* set date and id */);
q.executeUpdate();
같은 JPA를 사용 초래?
답변 해 주셔서 감사합니다. 이 접근법에 대한 나의 관심은 반복 된 읽기 - 수정 - 쓰기 사이클이 발생하는 것처럼 보이고, 간단한 SQL 업데이트 문은 DB가 모든 영향을받는 행을 클라이언트로 전송하고 DB로 다시 보내지 않고 업데이트 할 수있게하는 것입니다. 영향을받는 행의 수에 따라 이것은 상당한 차이를 만들 수 있습니다. 아니면 RMW주기를 최적화 할 수있는 JPA 계층이 있습니까? – Waldheinz
나는 귀하의 우려를 이해하고 있으며, 추가 클라이언트 - 서버 왕복 문제에 대해서는 귀하가 옳다고 생각합니다. 그러나 몇 가지 최적화를 처리 할 수 있습니다. 예를 들어 다음 링크를 참조하십시오. http://java-persistence-performance.blogspot.com/2011/06/how-to-improve-jpa-performance-by-1825.html – perissf