[기술 정리] 22. JPARepository

KangHo Lee's avatar
Dec 12, 2024
[기술 정리] 22. JPARepository
💡
JPA에서 JPARepository는 기본적인 CRUD 작업을 포함한 다양한 데이터 접근 기능을 제공하는 인터페이스입니다.

JPARepository의 구조

public interface JPARepository<T, ID> extends PagingAndSortingRepository<T, ID> { // additional custom methods can be defined here (추가적인 커스텀 메서드는 직접 작성) }

제네릭 타입

JPARepository는 두 개의 제네릭 타입 매개변수를 받습니다:
  1. T: 엔티티 클래스의 타입입니다. 이 리포지토리가 처리할 도메인 타입을 지정합니다.
  1. ID: 엔티티의 식별자(ID)의 타입입니다. 보통 Long, String, UUID 등이 사용됩니다.

예시: User 엔티티

@Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String email; // getters and setters } // interface입니다. public interface UserRepository extends JPARepository<User, Long> { // name으로 user 찾는 메서드는 내가 직접 작성 List<User> findByName(String name); }
  • JPARepository 활용 시 JPARepository를 구현하는 리포지토리와 그렇지 않은 일반 리포지토리 2개를 생성하는 편입니다.

JPARepository에 구현되어 있는 메서드

public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID> { // 저장 및 업데이트 <S extends T> S save(S entity); // 여러 엔티티 저장 <S extends T> List<S> saveAll(Iterable<S> entities); // 하나의 엔티티 조회 Optional<T> findById(ID id); // 모든 엔티티 조회 List<T> findAll(); // 페이징과 정렬 적용하여 모든 엔티티 조회 Page<T> findAll(Pageable pageable); // 정렬 적용하여 모든 엔티티 조회 List<T> findAll(Sort sort); // 여러 엔티티 삭제 void deleteAll(Iterable<? extends T> entities); // 하나의 엔티티 삭제 void delete(T entity); // ID를 통해 엔티티 존재 여부 확인 boolean existsById(ID id); // 전체 엔티티 개수 조회 long count(); }
 
Share article

devleekangho