2013-01-31 5 views
0

안녕하세요, 행의 특정 열을 업데이트하고 싶다면 최대 절전 모드에서 업데이트 쿼리를 사용하거나 단순히 최대 절전 모드 session.update() 메서드를 사용해야합니다. 방금 알게 된 내용Hibernate session.update() vs update query?

@org.hibernate.annotations.Entity(
     dynamicUpdate = true 

주석 설정되어 있으면 특정 열을 업데이트 할 수 있습니다. 전에 이것을 사용하지 않았기 때문에 이것을 사용하는 기준이 있는지 없는지 알고 싶습니다. 이것에 대한 결정을 내리는 데 도움이 필요합니다. 어떤 접근 방식이 더 좋을까요?

답변

1

동적 세션 업데이트가 해제되면, Hibernate는 모든 엔티티에 대해 가능한 쿼리를 모두 캐쉬한다.. 그래서 Hibernate는 엔티티를 갱신하려고 할 때마다 SQL을 생성 할 필요가 없다.

이 기능이 켜져 있으면 Hibernate는 캐싱하지 않고 요청할 때 항상 SQL 쿼리를 생성합니다. 따라서 데이터베이스는 더 가볍지 만 Hibernate는 무거워집니다.

언제 최대 절전 모드 동적 업데이트를 사용해야합니까? 많은 수의 열이있는 거대한 테이블이있는 경우 모든 엔티티에 대한 모든 쿼리를 캐시하면 평소보다 훨씬 많은 메모리가 소모됩니다. 따라서 동적 업데이트를 설정하여 성능을 향상시킬 수 있습니다. 또한 디버깅하는 경우 동적 업데이트는 수정 된 열만 업데이트 문에 나타나기 때문에 더 읽기 쉬운 쿼리를 제공합니다.

업데이트 쿼리 또는 세션 업데이트를 사용해야합니까? 업데이트 쿼리는 읽기 쉽고 유지하기가 어렵습니다 (예 : 필드 이름이 변경된 경우 세션 업데이트가 영향을받지 않지만 모든 쿼리를 변경해야 함).