Kotlin 2

코틀린과 JPA, 어떻게 타협하면 좋을까?

서론코틀린으로 개발하는 백엔드 개발자들 대부분에게 나타나는 고민이 하나 있다. 바로 코틀린의 불변성을 유지하면서 JPA와 같은 ORM의 가변 요구사항 사이에서 어떤 해결책을 가져가야 하는가? 이다.본 글에서는 몇가지 해결책에 대해 알아보고 선택 기준을 제시하려고 한다.본론해결책1. 첫번째 선택지는 JPA == Domain, 현실 타협형 해결책이다.@Entityclass User( @Id @GeneratedValue var id: Long? = null, var name: String)이 방식의 장점은 구현이 단순하고, 러닝 커브가 높지 않아 생산성이 높다는 것이다.반대로 단점은, 코틀린의 가장 큰 장점 중 하나인 객체 불변성을 활용할 수 없다는 것, 또 인프라에 의존하게 되어 테스트가 어렵다는..

개발 2026.01.06

Instant와 LocalDateTime, 어떻게 다를까?

서론현재 도메인 객체와 영속성 객체를 따로 두어 개발을 진행하고 있다.개발을 진행하던 중 Entity와 Domain에 시간 값이 다르게 적용되는 내용을 보고 이유를 알기 위해 정보를 확인해보았다.본 글에서는 객체의 생성 시간을 저장할 때 Entity 객체에는 Instant, Domain 객체에는 LocalDateTime을 적용하는 이유와 차이점을 기술한다.본론아래는 간단하게 작성한 Entity, Domain 객체이다.@Entityclass UserEntity( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Long? = null, var createdAt: Instant)data class UserDomain( val id: Long? ..

개발 2025.12.01