Spring/Spring Data Jpa 3

확장 기능 (사용자 정의 레포, Auditing, 도메인 클래스 컨버터, 페이징과 정렬)

사용자 정의 리포지토리 구현 스프링 데이터 JPA 리포지토리는 인터페이스만 정의하고 구현체는 스프링이 자동 생성스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현하면 구현해야 하는 기능이 너무 많음다양한 이유로 인터페이스의 메서드를 직접 구현하고 싶다면?JPA 직접 사용(EntityManager)스프링 JDBC Template 사용MyBatis 사용데이터베이스 커넥션 직접 사용 등QueryDSL 사용사용자 정의 인터페이스 예시public interface MemberRepositoryCustom { List findMemberCustom();} 사용자 정의 인터페이스 구현 클래스@RequiredArgsConstructorpublic class MemberRepositoryImpl implements ..

쿼리 메소드 기능

쿼리 메소드 기능 3가지메소드 이름으로 쿼리 생성메소드 이름으로 JPA NamedQuery 호출@Query 어노테이션을 사용해서 Repository 인터페이스에 쿼리 직접 정의 메소드 이름으로 쿼리 생성메소드 이름을 분석해서 JPQL 쿼리 실행#이름과 나이를 기준으로 회원을 조회하려면?public List findByUsernameAndGreaterThan(String username, int age) { return em.createQuery("select m from Member m where m.username = :username and m.age > :age") .setParameter("username", username) .setParameter("age", age) ..

Spring Data Jpa 공통 인터페이스 설정, 적용 및 분석

JavaConfig 설정 - 스프링 부트 사용시 생략 가능@Configuration@EnableJpaRepositories(vasePackages = "Repository 위치")public class AppConfig {}스프링 부트 사용시 @SpringBootApplication 위치를 지정(해당 패키지와 하위 패키지 인식)만약 위치가 달라지면 @EnableJpaRepositories 스프링 데이터 JPA가 구현 클래스 대신 생성org.springframework.data.repository.Repository를 구현한 클래스는 스캔 대상MemberRepository 인터페이스가 동작한 이유SpringDataJpa에서 인터페이스를 보고 구현체를 만들어서 주입시킴실체 출력해보기 (Proxy)meberR..