STUDY/Spring

Spring Boot | JPA 사용해보기 (2) Spring Data JPA

개미606 2021. 4. 23. 11:11

Spring Data JPA

지난 글에서 JPA만 사용해서 EntityManager를 이용해 DB와 소통했다면, 이번에는 Spring Data JPA를 사용해 볼 것이다.
Spring Data JPA는 리포지토리에 구현클래스 없이 인터페이스만으로 개발을 완료할 수 있다.
JPA를 더 쉽게 도와주는 것일 뿐!

실무에서는 JPA와 스프링데이터JPA를 기본으로 사용하고, 복잡한 동적 쿼리는 Querydsl이라는 라이브러리를 사용한다고 한다.
(출처: 인프런 강의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술)

Repository를 Spring Data JPA 방식으로 변경

@Repository 애노테이션을 붙이지 않아도 된다!
JpaRepository<DTO, PK type>을 상속받아 interface로 작성하기만 하면 기본적인 CRUD는 작성하지 않아도 모두 구현된다.

public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long> {
}

Service 수정

impl을 작성할 필요도 없기 때문에 바로 interface를 상속받으면 된다.
findAll()SELECT * FROM과 같다 조건 없이 모든 튜플을 가져온다.
save()INSERT와 같음. 기본적인 CRUD를 자동으로 정의해주기 때문에 그냥 메서드로서 쓰기만 하면 되는것... 우와..

@Transactional
@Service
@RequiredArgsConstructor
public class MemberService {

  //  private final MemberRepository repository;
    private final SpringDataJpaMemberRepository repository;

    public List<Member> findAll() {
        return repository.findAll();
    }

    public Member join(Member member) {
        return repository.save(member);
    }

}

테스트

정상적으로 잘 된다.