– Spring Boot 및 JPA 기반에 Spring Data JPA라는 프레임워크를 추가하면 개발이 쉬워짐(단순하고 반복적이라고 여겨졌던 개발 코드 대폭 감소 → 개발자는 핵심 비즈니스 로직 개발에 집중 가능) – 실무에서 관계형 데이터베이스를 사용한다면 Spring Data JPA는 더 이상 선택이 아닌 필수!
Spring Data JPA는 JPA를 편리하게 사용할 수 있게 해주는 기술입니다! 따라서 JPA를 먼저 배우고 Spring Data JPA를 배워야 합니다.
Spring Data JPA는 JpaRepository를 가져오면 자동으로 구현 객체를 생성 → 자동으로 Spring bean에 등록한다.
SpringConfig
강의를 따라했는데 이런 오류가 떴어요
에러 메시지
이 오류 메시지가 나타났습니다. 자동접속 불가, MemberRepository bean이 2개 이상 존재, jdbcTemplateMemberRepository(JdbcTemplateMemberRepository.java) ← 이 부분은 힌트로 보여드린 부분으로 질문방 검색 결과입니다!
jdbcTemplateMemberRepository에서 @Repository 주석을 주석 처리합니다. 나는 그것을했고 잘 작동했습니다! – 같은 타입(MemberRepository)의 두 개의 빈 등록 및 해제 문제! – @Repository로 자동 bin 등록(컴포넌트 스캔 대상)을 삭제하여 해결!
MemberService통합 테스트
테스트가 성공한 것을 볼 수 있습니다.
Spring Data JPA는 자동으로 “SpringDataJpaMemberRepository”를 Spring Bean으로 등록합니다(프록시라는 기술 사용 – 개체를 생성하여 Spring Bean에 로드 → 주입 및 쓰기).
스프링 데이터 JpaRepository
JpaRepository : 모든 기본 메서드 제공(예: findAll(), findAllById() 등)
위의 이미지는 오래된 예이므로 약간의 차이가 있습니다.
모두에게 효과가 있는 것!
하지만 모든 회사가 다르기 때문에 공통될 수 없는 부분이 있습니다 – 공통 클래스로 찾을 수 없습니다 이러한 부분을 규칙에 따라 생성하고 사용하는 방법은 다음과 같습니다(예: findByName())
Spring Data JPA에서 제공하는 기능
인터페이스를 통한 기본 CRUD “findByName()”, “findByEmail()”과 같은 메소드 이름만으로 검색 기능을 제공합니다. 자동 페이징 기능
(실제로 JPA와 Spring Data JPA를 기본으로 사용하는데, 복잡한 동적 쿼리의 경우 Querydsl이라는 라이브러리가 있습니다.Querydsl을 사용하면 안전하게 자바 코드로 쿼리를 작성하고 동적 쿼리를 편리하게 작성할 수 있습니다. 이 조합으로 해결하기 어려운 쿼리는 JPA에서 제공하는 네이티브 쿼리를 사용하거나 JdbcTemplate을 사용할 수 있음) – JPA, Spring Data JPA 및 Querydsl의 조합 사용 – 위의 조합으로 해결하기 어려운 부분 → 순수 SQL(native – write SQL)을 작성할 수 있는지 확인