개발/JPA
Kotlin에서 JPA 사용시 참고사항
브라운구
2022. 3. 30. 14:20
반응형
No-arg 생성자 자동 생성
JPA 사용시 디폴트 생성자가 있어야한다.
Entity는 반드시 public 혹은 protected의 no-arg생성자를 가지고 있어야 한다. Entity는 final 클래스일 수 없다. 모든 메소드와 엔티티 내에 영속화(persist)되는 변수들 또한 final로 지정할 수 없다
다음 플러그인은 @Entity, @Embeddable, @MappedSuperClass 어노테이션이 붙어있는 클래스에 No-arg 생성자를 자동으로 생성해준다
plugins {
kotlin("plugin.jpa") version "1.5.10"
}
allOpen 플러그인
코틀린의 클래스 및 메소드, 프로퍼티의 기본 변경자는 final이기 때문에 상속 및 오버라이드가 불가능하다
JPA의 지연로딩은 원본클래스를 상속하여 프록시로 만들고 사용하기 때문에 아래 작업을 꼭 해주어야한다. 안그러면 지연로딩이 되질 않는(모든게 즉시로딩) 상황을 볼 수 있다
@Entity, @Embeddable, @MappedSuperClass에 일일히 open을 적어주는것도 일이기 때문에 아래 플러그인을 적용하여 위의 어노테이션에 대해 open 상태로 만들어 주자
plugins {
kotlin("plugin.jpa") version "1.5.10"
kotlin("plugin.allopen") version "1.5.10"
}
allOpen {
annotation("javax.persistence.Entity")
annotation("javax.persistence.Embeddable")
annotation("javax.persistence.MappedSuperclass")
}
반응형