1. 소개 Spring Data JPA를 사용하다 보면, 단일 필드가 아닌 여러 개의 필드를 조합하여 기본 키(Primary Key)로 사용하는 복합 키(Composite Key) 를 설정해야 할 때가 있다. JPA에서 복합 키를 매핑하는 방법은 크게 두 가지이다.@EmbeddedId + @Embeddable@IdClass이번 글에서는 두 방법을 비교하고, 코드 예제를 통해 직접 실습할 수 있도록 정리해보겠다.2. @EmbeddedId 방식 (추천 방식) @EmbeddedId + @Embeddable 1. @Embeddable: 복합 키 클래스로 사용할 객체에 선언2. @EmbeddedId: 엔티티에서 해당 복합 키를 기본 키로 사용 (1) 복합 키 정의 (OrderId 클래스)import java.i..
1. 소개Spring Data JPA를 사용하면 엔티티의 생성 및 수정 시간을 자동으로 관리할 수 있다. 이를 위해 @EnableJpaAuditing, @EntityListeners, @CreatedDate, @LastModifiedDate 등의 어노테이션을 활용 할 수 있다.이번 글에서는 해당 어노테이션들의 역할과 사용법을 정리해보겠다. 2. 코드 예제아래는 Spring Data JPA의 Auditing 기능을 사용하는 예제 코드이다.@EntityListeners(EntityListeners.class)@MappedSuperclass@Getterpublic class TimeBaseEntity { @CreatedDate @Column(updatable = false) private Lo..
Entity Manager & EntityEntity Manager- 엔티티들을 관리하는 객체 영속성 컨텍스트- 엔티티들을 관리하는 환경 / 엔티티를 영구 저장하는 환경- 보통 하나의 엔티티 매니저는 하나의 영속성 컨텍스트를 관리한다. Entity- DB에서 영속적으로 저장된 데이터를 자바 객체로 매핑해 인스턴스로 존재하는 데이터 Entity Life Cycle비영속 상태 Memo memo = new Memo(); // 비영속 상태memo.setId(1L);memo.setUsername("ZINU");memo.setContents("비영속과 영속 상태");비영속 상태란 "임시 상태"라고도 불리며, 영속성 컨텍스트와 무관하게 자바 애플리케이션의 메모리에서만 존재하는 상태입니다. 데이터베이스와의 연결이 없..
4계층 아키텍처 (4-Tier Architecture)4계층 아키텍처는 애플리케이션을 논리적으로 분리된 네 개의 계층으로 구성하는 소프트웨어 설계 패턴입니다. 이 아키텍처는 관심사의 분리를 통해 유지보수성과 확장성을 향상시킵니다. 각 계층과 그 주요 요소들은 다음과 같습니다:1. Presentation Layer (표현 계층)- 주요 요소: View, Controller- 역할: 사용자 인터페이스와 데이터 표현을 담당2. Business Layer (비즈니스 계층)- 주요 요소: Service, Domain Model- 역할: 비즈니스 로직 처리 및 규칙 적용3. Persistence Layer (영속성 계층)- 주요 요소: Repository, DAO (Data Access Object)- 역할: 데이..
CQRS 패턴의 등장 배경과 효과CQRS(Command Query Responsibility Segregation) 패턴은 애플리케이션의 명령(Command)과 조회(Query) 작업을 분리하여 각각의 책임을 명확히 하는 아키텍처 패턴입니다. 이 패턴의 등장 배경과 주요 효과에 대해 알아보겠습니다.등장 배경1. **복잡성 증가**: 전통적인 CRUD 기반 아키텍처에서는 애플리케이션이 복잡해질수록 도메인 모델의 복잡도가 증가하고 유지보수 비용이 높아지는 문제가 발생했습니다2. **성능 최적화의 어려움**: 읽기와 쓰기 작업이 동일한 모델을 사용함으로써 각 작업에 대한 최적화가 어려웠습니다3. **확장성 제한**: 읽기와 쓰기 작업의 요구사항과 부하가 다름에도 불구하고 동일한 모델을 사용하여 확장성에 제한이..