엔티티는 식별자(@Id)를 가지를 객체로써 equals(), hashcode()를 재정의해줘야 동일성과 동등성이 보장될 수 있다.
재정의시 @Id 필드는 필수로 넣어주면 좋다.
toString() 재정의
연관관계 필드들은 제외하고 정의해야 한다.
양방향 관계라면 특히 조심해야 한다.
kotlin 기준 엔티티 작성 주의사항
all open 플러그인 잘쓰기
// allopen 확장, @Component 등 특정 스프링 어노테이션에 대해 allopen 플러그인을 적용.
kotlin("plugin.spring") version kotlinVersion
// noarg 확장, @Entity, @Embeddable, @MappedSuperclass 어노테이션에 대해 noarg 플러그인 적용.
kotlin("plugin.jpa") version kotlinVersion
코틀린을 사용하여 JPA, 스프링을 개발할 때 기본적으로 위와 같은 두 플러그인을 설정하게 된다.
JPA의 지연 로딩을 제대로 사용하려면 all open 플러그인의 커스텀이 필요하다.
지연 로딩은 프록시 객체를 만들 수 있어야 하는데, 그러려면 엔티티 클래스에 open 키워드를 클래스와 필드에 추가해줘야한다.
엔티티 작성시 주의사항
equals(), hashcode() 재정의
equals()
,hashcode()
를 재정의해줘야 동일성과 동등성이 보장될 수 있다.@Id
필드는 필수로 넣어주면 좋다.toString() 재정의
kotlin 기준 엔티티 작성 주의사항
all open 플러그인 잘쓰기
open
키워드를 클래스와 필드에 추가해줘야한다.출처