https://tech.inflab.com/20240110-java-and-kotlin/
→ 인프랩은 jpa는 자바, 그외는 kotlin을 사용한다. 멀티 모듈을 사용한다고 함.
JPA는 엔티티를 선언할 때
final
키워드를 사용하지 않도록 요구합니다.또한 변경 감지, 지연 로딩 등 런타임에 언제든지 변경될 수 있는 상태를 가지는 것을 자연스럽게 생각합니다.
지연 로딩을 사용하려면 엔티티 클래스를 open 해야 한다.
final
클래스 → open class
로 바꿔줘야 함.all-open
플러그인을 포함한다.allOpen {
annotation("jakarta.persistence.Entity")
annotation("jakarta.persistence.Embeddable")
annotation("jakarta.persistence.MappedSuperclass")
}
하이버네이트 → 엔티티 클래스는 기본 생성자를 가져야 한다.
→ 불편한 보일러 플레이트 코드
kotlin-jpa
: 코틀린에서 JPA를 위한 클래스들의 기본 생성자를 모두 처리해주는 플러그인 → noArg 설정
kotlin-spring
: 특정 Spring 어노테이션(@Component
, @Service
, @Repository
, @Configuration
, @Controller
, @RestController
, @SpringBootApplication
)이 붙은 클래스들을 자동으로 open
으로 만들어줌