@ Spring Boot JPA 를 학습하기
JPA
Java 애플리케이션에서 관계형 데이터를
관리하기 위한 프레임워크를 제공하는 고급 API
Repository 인터페이스에서 정의한 Method
이름을 기반으로 쿼리를 자동으로 생성하는
기능을 제공
Java Persistence API
다양한 DB 에 대한 저장소 추상화를 제공
데이터 액세스 계층 구현을 단순화하는 것을 목표
Spring Data 프로젝트의 일부
데이터 지속성을 위해 JPA를 사용
Spring 기반 애플리케이션을 더 쉽게 구축
@Query
주석을 사용하여 사용자 정의 쿼리를 정의Page<Employee> findAll(Pageable pageable);
🖋️ JPA 를 사용하는 이유?
- 생산성
- 상용구 코드를 줄이고 자동 쿼리 생성으로 생산성 높이기
- 유지관리성
- 특히 DB Schema 가 변경된 경우 코드를
관리하고 업데이트하기 더 쉬움- 확장성
- 캐싱 및 성능 최적화와 같은 기능 제공
- 일관성
- 데이터 액세스에 대한 표준화된 접근 방식을 사용
- APP 전반에 걸쳐 일관성 보장
- JDBC 에 비해 DB 상호작용을 위한 더 높은 수준의 추상화
EXAMPLE
public interface SpringDataJpaEmployeeRepository
extends JpaRepository<Employee, Long>, EmployeeRepository {
// Find employees by first name and last name
List<Employee> findByFirstNameAndLastName(String firstName, String lastName);
// Count employees by department
long countByDepartment(String department);
// Check if an employee exists by email
boolean existsByEmail(String email);
// Delete employees by department
void deleteByDepartment(String department);
@Query("SELECT e FROM Employee e WHERE e.lastName = :lastName")
List<Employee> findByLastName(@Param("lastName") String lastName);
// Find all employees with pagination
Page<Employee> findAll(Pageable pageable);
// Find employees by department with sorting
List<Employee> findByDepartment(String department, Sort sort);
}