영속성 어댑터 구현하기
영속성 어댑터의 책임과 인터페이스 분리 원칙에 따라 포트를 좁게 나누는 방법을 정리하고, 스프링 데이터 JPA 예제와 트랜잭션 경계 설정 방식을 설명합니다.
영속성 어댑터의 책임과 인터페이스 분리 원칙에 따라 포트를 좁게 나누는 방법을 정리하고, 스프링 데이터 JPA 예제와 트랜잭션 경계 설정 방식을 설명합니다.
도메인 주도 개발 시작하기 5장을 정리하며, 스펙을 이용한 동적 검색과 스펙 조합, 정렬·페이징 처리, 동적 인스턴스 생성과 @Subselect를 이용한 조회 전용 모델 구현 방법을 다룹니다.
JPA의 save와 saveAll을 각각 10,000건씩 테스트하여 실행 시간을 비교하고, saveAll이 더 빠른 이유를 프록시 기반 @Transactional 동작 원리로 설명합니다.
JPQL과 비교하며 Querydsl의 기본 문법인 Q타입 활용, 검색 조건, 결과 조회, 정렬, 페이징, 집합, 조인, 서브쿼리, Case 문, 상수와 문자 더하기를 정리합니다.
스프링 데이터 JPA 리포지토리에 Querydsl을 결합하는 사용자 정의 리포지토리 구성과, 내용 쿼리와 count 쿼리를 나눈 페이징 처리, Pageable의 Sort를 OrderSpecifier로 바꾸는 방법을 정리합니다.
스프링 데이터 JPA 실습 프로젝트의 Gradle 설정과 스타터 라이브러리 구성, H2 데이터베이스 연동, 순수 JPA 리포지토리와 스프링 데이터 JPA 리포지토리로 기본 동작을 확인하는 과정을 정리합니다.
실습에 사용할 Member, Team 엔티티와 양방향 연관관계, 연관관계 편의 메소드를 정의하고, 순수 JPA로 저장·조회와 지연 로딩 동작을 확인합니다.
순수 JPA로 기본 CRUD 리포지토리를 만들어 본 뒤, 스프링 데이터 JPA의 공통 인터페이스 JpaRepository로 대체하고, 스프링 데이터 JPA가 구현 클래스를 만들어 주입하는 방식과 주요 메서드를 정리합니다.
메소드 이름으로 쿼리를 생성하는 방법부터 @Query, 파라미터 바인딩, 반환 타입, 페이징과 정렬, 벌크성 수정 쿼리, @EntityGraph까지 스프링 데이터 JPA의 쿼리 메소드 기능을 정리합니다.
사용자 정의 리포지토리 구현, Auditing으로 등록일·수정일·등록자·수정자 관리, 도메인 클래스 컨버터, 스프링 MVC에서 Pageable로 받는 페이징과 정렬 등 스프링 데이터 JPA의 확장 기능을 정리합니다.
스프링 데이터 JPA 공통 인터페이스 구현체인 SimpleJpaRepository의 @Repository·@Transactional 적용 방식과, save() 메서드가 isNew로 persist와 merge를 나누는 기준, Persistable로 판단 로직을 바꾸는 방법을 정리합니다.
JpaRepository를 상속한 인터페이스만으로 리포지토리 구현체가 만들어져 스프링 빈으로 등록되는 스프링 데이터 JPA 사용법과, SpringConfig에서 이를 주입받는 방법을 정리합니다.