Kotlin + SpringBoot + JPA

2018, Jul 06    

Spring Boot+코틀린으로 간단한 API를 만들고 있던 중에 막혔던 부분을 소개하고자 한다.
(깃헙 참고 - https://github.com/lovia98/kotiln-restapi)

  • JPA적용시 Entity 설정
    JPA에서 코틀린 Entity에 접근하기 위해서는 기본 생성자가 필요하다.
    여기서 기본 생성자란 인자가 없는 생성자를 말한다.
    @Entity
    data class Article (@Id
                  @GeneratedValue(strategy = GenerationType.IDENTITY)
                  var articleId: Int,
                  var title: String,
                  var author: String,
                  var content: String,
                  var category: Category) {
    
      //JPA 적용을 위해선 default생성자 추가가 필요하다.
      contructor() : this(.....)
    }
    

    이렇게 인자가 없는 contructor를 추가 할 경우 코틀린에서는 주 생성자를 호출 해줘야 하기 때문에 this(..) 호출이 필요하고 모든 프로퍼티를 언급해주는 일은 정말 귀찮은 일이다.


이 또한 코틀린에서는 지원해주는 플러그인이 있다. No-arg compiler plugin을 적용하자.
(Ref.https://kotlinlang.org/docs/reference/compiler-plugins.html#no-arg-compiler-plugin)

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"
    }
}

apply plugin: "kotlin-noarg"

플러그인 추가후에는 인자 없는(no-argument)생성자를 일일히 추가해주지 않아도 된다.