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);
}
}
테스트
정상적으로 잘 된다.
'STUDY > Spring' 카테고리의 다른 글
Spring Boot | logback 설정 (0) | 2021.05.18 |
---|---|
Spring Boot | RestTemplate (0) | 2021.05.13 |
Spring Boot | logback.xml 파일 경로 설정 (0) | 2021.04.22 |
Spring Boot | AOP를 활용해 request마다 로그 출력하기 ( REST API ) (0) | 2021.04.19 |
Spring Boot | AOP(Aspect Oriented Programming) (0) | 2021.04.16 |