레포지토리(Repository)는 일반적으로 데이터 접근 계층에서 사용되는 인터페이스로, 데이터베이스와 상호작용하며 CRUD(Create, Read, Update, Delete) 연산을 수행합니다. Spring Data JPA를 사용하면 JpaRepository 인터페이스를 상속받아 기본적인 CRUD 메소드들을 자동으로 사용할 수 있습니다. 추가적으로 메소드 이름만으로 쿼리를 생성하거나, @Query 어노테이션을 사용하여 직접 쿼리를 정의할 수도 있습니다.
save(entity): 엔티티 저장 또는 업데이트.
findById(id): ID로 엔티티 조회. 반환 타입은 Optional.
findAll(): 모든 엔티티 조회.
existsById(id): ID로 엔티티 존재 여부 확인.
deleteById(id): ID로 엔티티 삭제.
delete(entity): 엔티티 삭제.
deleteAll(): 모든 엔티티 삭제.
count(): 엔티티 개수 조회.
find...By, read...By, query...By, count...By, get...By 등의 접두사와 조건절을 조합하여 메소드 이름을 정의하면, 스프링 데이터 JPA가 자동으로 해당 쿼리를 생성합니다. 예를 들어, findByUsername(String username)은 username으로 엔티티를 조회하는 쿼리를 생성합니다.
@Query 어노테이션을 사용하여 JPQL 또는 네이티브 쿼리를 직접 정의할 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다.
@Query("SELECT u FROM User u WHERE u.email = ?1")
User findByEmail(String email);