왜 Kotlin인가
Java와 100% 호환되면서 코드가 간결해집니다. Null safety가 언어 레벨에서 보장되고, 데이터 클래스, 확장 함수, 코루틴 등 현대적인 기능을 바로 쓸 수 있습니다.
점진적 전환 전략
Java와 Kotlin은 같은 JVM 위에서 공존할 수 있습니다. 모든 코드를 한 번에 바꾸지 않고 파일 단위로 전환할 수 있습니다.
1단계: 새 파일은 Kotlin으로
기존 Java 파일은 건드리지 않고, 새로 만드는 파일부터 Kotlin으로 작성합니다.
2단계: 데이터 클래스 우선 전환
// Java DTO → Kotlin data class
data class UserResponse(
val id: Long,
val email: String,
val createdAt: LocalDateTime,
)
3단계: 서비스 레이어 전환
@Service
class UserService(
private val userRepository: UserRepository,
) {
fun findById(id: Long): UserResponse =
userRepository.findByIdOrNull(id)
?.toResponse()
?: throw UserNotFoundException(id)
}
주요 이슈
JPA Entity는 open class 필요
Kotlin 클래스는 기본적으로 final이라 JPA 프록시가 동작하지 않습니다.
kotlin-allopen 플러그인을 사용하세요.
// build.gradle.kts
plugins {
kotlin("plugin.spring") version "2.0.0"
kotlin("plugin.jpa") version "2.0.0"
}