스프링 데이터 JPA
- 구현체 없이 인터페이스만으로 리포지토리에 커밋이 가능한 코드를 만들 수 있다.
- 반복적으로 개발한 CRUD 기능도 스프링 데이터 JPA가 모두 제공한다.
- RDB에서 스프링 데이터 JPA는 아주 좋은 기능이다.
스프링 데이터 JPA 인터페이스
public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository {
@Override
Optional<Member> findByName(String name);
}
이외의 인터페이스 선언이나 구현체는 필요없다.
- 인터페이스 이름에 규칙이 있다. (JPQL)
- 예를들어
findByNameAndId
라고 하면&
연산자를 넣을 수 있다. - 간단한 요구사항은 인터페이스 이름만으로 개발이 끝난다.
- 페이징 기능을 자체적으로 제공한다.
Bean 설정
@Configuration
public class SpringConfiguration {
private final MemberRepository memberRepository;
public SpringConfiguration(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Bean
public MemberService memberService() {
return new MemberService(memberRepository);
}
}
의존주입도 Repository 의존만 받아오면 된다.
- 스프링 데이터 JPA가
SpringDataJpaMemberRepository
인터페이스를 Bean으로 자동등록 해준다.
QueryDSL
- 복잡한 동적 쿼리를 위한 라이브러리.
- ORM으로 해결하기 어려운 쿼리들은 JdbcTemplate를 사용하면 된다.