Spring Initilizer를 사용해서 프로젝트 생성하기
Spring Data JPA - 예제 도메인 모델과 동작확인
3. 순수 JPA 기반 Repository
JpaRepository 적용, 분석
💡 쿼리 메소드 기능 3가지 1. 메소드 이름으로 쿼리 생성 2. @NamedQuery 3. @Query
1) 엔티티 조회 > select m 2) 값 조회 > select m.username JPA 값 타입(@Embedded)도 이 방식으로 조회 3) DTO 조회 > select new 패키지명경로.DTO명 🚨주의🚨 패키지 경로 모두 작성!! 출처 김영한 강사
파라미터 바인딩 > 위치 기반 - 사용 ❌ 이름 기반 코드 가독성과 유지보수를 위해 이름 기반 파라미터 바인딩 사용! 📁 @Query - 이름 기반 파라미터 바인딩 사용 예시 컬렉션 파라미터 바인딩 > SQL in절
Spring Data JPA의 유연한 반환 타입 지원 > Spring Data JPA가 지원하는 많은 타입 참고 : 공식 문서 결과가 많거나 적은 경우 컬렉션 결과 0개 : 빈 컬렉션 반환([]) > 🚨주의🚨 실무에서 아래의 처럼 컬렉션 반환 결과 없는 경우를
1. 순수 JPA 페이징과 정렬 setFirstResult(offset), setMaxResult(limit) 사용 📁 MemberJpaRepository ✔ MemberRepositoryTest > 참고 JPA는 방언 기반으로 동작해서 DB가 변경되더라도 페
✏️ JPA의 수정 JPA는 엔티티를 조회한 뒤, commit 시점에 더티체킹을 통해 수정된 값이 있다면 update 쿼리를 날린다. 즉, 엔티티 하나 하나 더티체킹해서 update를 각각 날린다. ✏️ 벌크성 수정 쿼리 하지만, "모든 직원의 연봉을 10%씩 인
Fetch Join > 실무에서는 부가적으로 가져올 데이터들이 많아서 N+1 문제 많이 발생함 ⇒ fetch join으로 해결 🔴 N+1 문제 발생 모든 Member 가져오기 위한 쿼리 (쿼리수 : 1개 - 이때는 Team은 프록시 객체) \+ 각 Member의 T
JPA Hint란 JPA 구현체(= 하이버네이트)에게 제공하는 힌트 SQL 힌트 아님 ReadOnly 힌트 @QueryHints(value = @QueryHint(name = "org.hibernate.readOnly", value = "true")) 📁 M
1. 사용자 정의 Interface 생성 2. 사용자 정의 Interface 구현체 생성 3. 사용자 정의 Interface 상속
Spring Data JPA은 모든 테이블의 필수 컬럼인 (등록일, 수정일, 등록자, 수정자)를 어떻게 처리할까?
PathVariable 파라미터 : idPathVariable 파라미터 : 엔티티HTTP 요청은 pk를 받지만, 도메인 클래스 컨버터가 중간에 동작해서 엔티티 객체를 반환한다.도메인 클래스 컨버터도 repository를 사용해서 엔티티를 찾는다.🚨주의🚨도메인 클래스
파라미터 : Pageable스프링 컨테이너 생성 - 스프링 빈 생성 - 의존관계 주입 - 초기화 콜백 - 사용 - 소멸 전 콜백 - 스프링 종료@PostConstruct : 초기화 콜백@PreDestroy : 소멸 전 콜백위에서는 의존관계 주입이 끝나고, 멤버 100명
JpaRepository 인터페이스의 구현체인 SimpleJpaRepository를 분석해보자!