핵심 요약
스포카가 Kotlin으로 JPA Entity를 다루며 자주 보이는 안티패턴과 바람직한 설계 방향을 공유합니다.
주요 경험
- mutable 프로퍼티의 외부 노출을 피하고, 엔티티의 상태 변화는 특정 비즈니스 메서드를 통해 표현하는 설계가 중요함
- Data class의 동등성은 식별자 기반으로 재정의하고, 필요시 일반 클래스로 설계하는 것이 유연함
- 연관관계 정의에서 lateinit 사용의 위험성과 nullable 대안, 객체참조 방식의 설계가 런타임 안정성을 높임
얻은 인사이트
- 도메인 엔티티는 생명주기를 반영하는 메서드와 비즈니스 규칙으로 제약을 명확히 표현해야 함
- 엔티티 간 참조를 유지하되 초기화 시점의 예외를 피하는 패턴이 중요
