
Spring Data JPA는 Spring Data Commons 를 바탕으로 Jakarta Persistence API( JPA )를 지원하는 라이브러리다.간단하게 JPA의 개념을 알아보고 Spring Data JPA 에서 어떻게 지원하는지를 알아보자ORM( Obje

Spring Data JPA에서는 메서드 명칭에서 쿼리를 도출해내거나, 수동으로 작성한 쿼리를 사용한다.이 중에서 메서드 명칭은 주어와 술어로 구분된다.주어는 find..By, exists..By 와 같이 최종적으로 해낼 작업을 명시하며,술어는 IsStartingWit
데이터베이스 릴레이션에서 원하는 속성만을 뽑아내어 새로운 릴레이션을 생성해내는 작업을 Projection이라 부른다.SQL에서 SELECT문만 생각해봐도 테이블에서 원하는 특정 속성값만 얻어내는 작업이 가능하고, 그 과정에 프로젝션이 사용된다고 볼 수 있다.Spring
JPA에서는 프로그래밍 방식으로 JPQL 쿼리를 작성할 수 있는 빌더 클래스 Criteria API를 지원한다.이를 이용해 도메인 클래스에 대한 select, from, where 절을 정의할 수 있다.JPA에서의 Criteria 관련 내용은 해당 문서를 참고하고, 이
Spring Data Commons 모듈에 있는 Example 인터페이스를 이용하면 간단한 동적쿼리 작성이 가능하다. Criteria API나 QueryDSL에 비하면 기능이 부족하다고 느껴지지만, 별도의 의존성을 추가할 필요가 없고 특정 인터페이스를 상속할 필요도
Transaction은 데이터베이스에 하나의 작업 단위를 의미한다. 예를들어, A가 B에게 송금하는 과정에서는 A에서 출금 / B에게 입금 두 SQL 작업이 발생하는데 이를 송금이라는 트랜잭션 단위로 구분하는 것이다.트랜잭션들은 ACID 라고 불리는 4가지의 속성을 보
데이터베이스에서 여러 트랜잭션이 공유자원에 접근하는 상황이 자주 발생한다.여러 트랜잭션이 동시에 공유자원에 접근하게되면 데이터가 변조될 가능성이 높아진다. 이를 방지하기 위해 Lock이 사용되며, 공유자원에 접근하기 위해서는 Lock을 먼저 취득해야만 한다. Lock에
Spring Data에서 기본적으로 Repository 인터페이스는 컨테이너에 의해 인스턴스화 되어 관리된다.Java Config 혹은 XML Config를 통해 JPA Repository를 활성화시키면 하위 패키지들의 Repository 인터페이스들을 Bean으로 생
Repository에 의해 관리되는 Entity들을 Aggregate Root 라고 부른다.Domain-Driven Design 애플리케이션에서 이러한 Aggregate Root 들은 일반적으로 이벤트를 발행한다. Spring Data 에서는 이러한 이벤트와 관련된 메