Spring - Spring Data JPA

iseon_u·2022년 6월 18일
0

Spring

목록 보기
13/33
post-thumbnail

Spring Data JPA


⚠️ 
스프링 데이터 JPA 는 JPA 를 편리하게 사용하도록 도와주는 기술
JPA 를 먼저 학습한 후 스프링 데이터 JPA 학습

  • 리포지토리에 구현 클래스 없이 인터페이스만으로 개발 가능
  • 반복 개발해온 기본 CRUD 기능도 스프링 데이터 JPA가 제공
  • 개발자는 핵심 비즈니스 로직을 개발하는데 집중할 수 있다.
  • 관계형 데이터 베이스를 사용한다면 스프링 데이터 JPA는 필수

SpringConfig

@Configuration
public class SpringConfig {

		private final MemberRepository memberRepository;
		
		@Autowired
		public SpringConfig(MemberRepository memberRepository) {
				this.memberRepository = memberRepository;
		}

		@Bean
		public MemberService memberService() {
				return new MemberService(memberRepository);
		}

		@Bean
		public MemberRepository memberRepository() {
  • JpaRepository 인터페이스를 상속 받는 인터페이스의 구현체를 자동으로 만들어준다.
  • 구현체를 스프링 빈에 자동으로 등록해준다.
  • 등록된 구현체를 가져다 사용하면 된다.

스프링 데이터 JPA 제공 기능

  • 인터페이스를 통한 기본적인 CRUD
  • findByName(), findByEmail() 처럼 메서드 이름만으로 조회 기능 제공
  • 페이징 기능 자동 제공

ℹ️
실무에서는 JPA 와 스프링 데이터 JPA 를 기본으로 사용
복잡한 동적 쿼리는 Querydsl 이라는 라이브러리를 사용
Querydsl을 사용하면 쿼리도 자바 코드로 안전하게 작성 가능
동적 쿼리도 편리하게 작성 가능

공통 클래스로 제공할 수 없는 것

public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository {
    // JPQL select m from Member m where m.name = ?
		@Override
    Optional<Member> findByEmail(String email);
}
  • 인터페이스로 공통화 할 수 없는 메서드
  • findByXXX 로 작성
  • 알맞는 JPQL 생성
  • 단순한 것들은 인터페이스만으로 해결
profile
🧑🏻‍💻 Hello World!

0개의 댓글