1.1 no-arg : Reflection 관련
1.2 all-open : Proxy 관련
example)
plugins{
kotlin("plugin.jpa") version ...
id ("org.jetbrains.kotlin.plugin.allopen") version ...
id ("org.jetbrains.kotlin.plugin.noarg") version ...
}
// (1)
noArg{
annotation("javax.persistence.Entity")
}
// (2)
allOpen{
annotation("java.persistence.Entity")
annotation("java.persistence.MappedSuperclass")
annotation("java.persistence.Embeddable")
}
Description)
(1) Entity 어노테이션이 붙은 곳에 기본 생성자 생성
(2) Entity, MappedSuperclass, Embaddable 어노테이션 붙은 클래스를 open 클래스로 만들어준다.
import javax.persistence.*
@Entity
class Member( // (1)
@Id
@GeneratedValue
var id : Long ? = null,
@Column
var name : String
protected set // (2)
){
fun changeName(name : String){
this.name = name
}
}
Description)
(1) 코틀린에서 Entity를 생성할 때 data class로 만드는 것을 권장 하지 않는다. (일반 class로 생성)
(2) 기본적으로 Entity는 getter에 열려있고, setter에 닫혀있어야 한다.
REFERENCE :
Spring Boot + Kotlin + JPA 적용하기 Entity 생성시 생각해볼 점들
TIL :
개발자 하디 TIL