Record 2

Java Record와 Sealed Class로 도메인 모델을 단단하게 만들기 (패턴 매칭까지)

Java 17의 record로 데이터 클래스를 간소화하고, sealed class로 타입 계층을 제한해 안정적인 모델링을 만드는 방법을 패턴 매칭 관점에서 정리합니다.도입 (문제 상황)DTO나 이벤트 객체를 만들 때 equals/hashCode/toString를 매번 생성하거나, 누락 때문에 버그를 겪은 적 있으실 거예요. 또 “이 타입은 이 하위 타입들만 올 수 있다”를 코드로 강제하고 싶은데, 문서나 컨벤션에만 의존하면 금방 깨지기도 합니다. Java 17의 Record와 Sealed Class는 이런 반복과 불확실성을 언어 차원에서 정리해 줍니다.핵심 개념: Java Record와 Sealed Class가 중요한 이유Record와 Sealed Class는 단순히 “신기능”이 아니라, 모델을 더 명확..

JAVA 2026.02.27

Java 불변 객체와 방어적 복사: record로 안전한 도메인 만들기

Java 17 기준으로 불변 객체가 왜 중요한지, 방어적 복사로 캡슐화를 지키는 방법, record 활용과 얕은/깊은 복사 차이를 실무 관점에서 정리합니다.도입 (문제 상황)컬렉션이나 날짜 같은 값을 “그냥 getter로 꺼내줬는데”, 어느 순간부터 데이터가 몰래 바뀌어 버린 경험이 있으실 거예요. 특히 멀티스레드 환경이나 캐시, 이벤트 기반 처리에서는 이런 변경이 재현도 어렵고 원인 파악도 더 어렵습니다. 이럴 때 가장 강력한 방어막이 **불변 객체(Immutable Object)**와 **방어적 복사(Defensive Copy)**입니다.핵심 개념: Java 불변 객체가 중요한 이유 + 방어적 복사불변(Immutable)이 주는 실무적 이점불변 객체는 “한 번 만들어지면 상태가 바뀌지 않는 객체”입니..

JAVA 2026.02.26