사용자 도구

사이트 도구


java:hibernate:gotchas

문서의 이전 판입니다!


Hibernate Gotchas

하이버네이트에 관해 항상 기억해둬야 할 사항들을 정리해 둔다.

hashCode와 equals를 항상 구현한다

hashCode와 equals를 항상 구현해야 한다.

이때 DB 프라이머리키(ID)가 아닌 항상 변치 않고 해당 객체를 대표하는 의미를 가질 수 있는 비즈니스 키(business key)를 hashCode와 equals의 대상으로 삼아야 한다. 이유는 Set등에 신규 객체를 넣을 경우 신규 객체는 아직 프라이머리키가 지정되지 않은 상태이기 때문에 ID가 모두 null 혹은 0이며 이 경우 Set에 저장할 때 equals가 항상 true 여서 이전의 값을 뒤에 저장한 값이 계속 덮어써버리는 현상이 발생하기 때문이다.

따라서 ID를 equals/hashCode의 기준으로 삼을 경우 매우 주의해야 한다. 관련 참조 - Hibernate equals and hashCode

One-To-One 과 Many-To-One 관계를 조심하라

One-To-One과 Many-To-One 관계에서 One 측은 not null이라고 명시하지 않는이상 Lazy Loading이 작동하지 않는다. 이에 관해서는 JPA One-To-One을 참조한다.

쿼리 로그를 남겨라

hibernate.show_sql=true
hibernate.format_sql=true

위 프라퍼티 옵션으로 쿼리 로그를 남길 수 있다. 그러나 hibernate.show_sql=false로 두고 되도록 Log4j 옵션을 사용하는 것이 좋다. Hibernate Log 남기기를 참조한다.

참조

java/hibernate/gotchas.1316196661.txt.gz · 마지막으로 수정됨: 2011/09/17 03:11 저자 kwon37xi