8-1.개념
1. 스프링 데이터 JPA
- Spring 프레임 워크에서 JPA를 편리하게 사용할 수 있도록 제공하는 Spring Data 모듈 중 하나
- JPA를 추상화시킨 Repository라는 인터페이스 사용
- 쿼리메소드를 호출하는 것 만으로도 손쉽게 SQL문 생성
2. 특징
- Spring 및 JPA 기반의 Repository 구축을 위해 인터페이스와 쿼리메소드 제공
- Querydsl 쿼리 지원 및 이에 따른 안전한 JPA 쿼리 처리
- Pagenation 지원
- Spring Data JPA를 사용하면 기존의 EntityManagerFactory, EntityManager, EntityTrasaction 같은 객체 필요 없음
3. Repository 인터페이스
- 인터페이스 상속 구조

- 인터페이스 종류 및 설명
- Repository
- CrudRepository
- PagingAndSortingRepository
- 검색 및 검색 결과를 페이징 처리하고자 할 경우 사용
- JpaRepository
- 영속성 컨텍스트 플러시 및 배치에서 레코드 삭제와 같은 일부 JPA 관련 추가 방법 제공
4. 쿼리메소드
- JPQL을 메소드로 대신 처리할 수 있도록 제공하는 기능
- 메소드의 이름으로 필요한 쿼리를 대신 만들어주는 기능
- "find + (엔티티이름) + By + 변수 이름" 과 같이 네이밍 룰만 알면 사용 가능
- 엔티티 이름 생략 가능
- 쿼리 메소드 유형

사용 방법
- Service에서 엔티티 그대로 사용하면 훼손 될 가능성이 있으므로 비영속 객체(DTO)로 변경해서 반환
참고
https://gitlab.com/java702/10.-jpa/chap07.spring_jpa.git