그동안 JPA CRUD를 직접 작성하였다.
그런데 스프링 데이터 JPA를 이용하면
가장 기본적인 CRUD - save, delete, find, findAll, count 등 (그 이외에도 정말 많은)
다양한 기능들이 구현되있는 인터페이스를 상속받아 사용할 수 있다.
직접 사용해보았는데 신세계다.
@Repository
public class MemberJpaRepository {
@PersistenceContext
private EntityManager em;
public Member save(Member member) {
em.persist(member);
return member;
}
public void delete(Member member) {
em.remove(member);
}
public Member find(Long id) {
return em.find(Member.class, id);
}
직접 구현한 JPA CRUD 중 일부이다.
public interface MemberRepository extends JpaRepository<Member, Long> {
List<Member> findByUsernameAndAgeGreaterThan(String username, int age);
}
아래는 스프링 데이터 JPA의 인터페이스이고 JPARepository를 extends 하였는데
이 안에 이미 수많은 구현체들이 존재하고 그 안의 CRUD 기능을 사용만 하면 된다.
또한 함수이름만 설정하면 그대로 쿼리를 만드는 마법같은 기능을 써준다.
쿼리 메소드라는 기능은 메소드 이름으로 쿼리 생성이 가능하다.
참고사이트
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/
쿼리 메소드 기능 3가지
- 메소드 이름으로 쿼리 생성 -> (아주 간단한 메소드만 사용)
- 메소드 이름으로 JPA NamedQuery 호출 -> (실무에서 사용할일 거의 없음)
- @Query 어노테이션을 사용해서 리파지토리 인터페이스에 쿼리 직접 정의
다음글에 쓰겠음.
인프런 김영한님의 스프링 데이터 JPA를 듣고 작성한 글입니다.
'JPA' 카테고리의 다른 글
Querydsl 소개 (0) | 2022.07.19 |
---|---|
API 개발 고급 - 지연 로딩과 조회 성능 최적화 (0) | 2022.07.10 |
프록시와 연관관계 (즉시로딩, 지연로딩) (0) | 2022.07.02 |
상속관계 매핑 (0) | 2022.06.29 |
다양한 연관관계 매핑 (0) | 2022.05.16 |
댓글