5

hashcode()equals()의 영구 엔티티를 덮어 쓸 때 ID를 포함해서는 안되며 객체를 고유하게 식별하는 의미있는 속성 만 포함해야한다는 것을 알고 있습니다. . 그러나 최대 절전 모드로 낙관적 동시성 제어에 사용되는 version 필드는 무엇입니까? 신분증과 마찬가지로 잘 건너 뛸까요? 만약 new User(name='John', version=1).equals(new User(name='John',version=2))이라면 Hibernate OCC를 혼동하지 않을 것입니다.Hibernate : hashcode()와 equals() 메소드에 'version'필드를 포함해야 하는가

답변

3

비즈니스 키 동등성을 사용하여 equals() 및 hashCode()를 구현하는 것이 좋습니다. 비즈니스 키 동등성은 equals() 메서드가 비즈니스 키를 구성하는 속성 만 비교한다는 것을 의미합니다. http://docs.jboss.org/hibernate/core/3.3/reference/en/html/persistent-classes.html#persistent-classes-equalshashcode

+0

그래, 내가 ': 그것은 당신이 하지가 참조하는 equals()hashcode()

의 버전 속성을 포함해야한다 현실 세계에서 우리의 인스턴스를 식별하게 될 키 (천연 후보 키) 그래서

입니다 읽었 어. 그러나'version' 필드는 거기에 언급되지 않았고 그 목적을 고려하여 (다른 값들은 다른 객체를 의미합니다) 나는 의심했습니다. 그러나 Hibernate는 응용 프로그램의 다른 어떤 것에 대해서'version'을 사용하지 말 것을 권고합니다. 그래서, 더 많이 생각할수록,'버전'은'equals()'와'hashcode()'에 포함되지 않아야한다고 확신하게됩니다. – wajda