spring-data-jpa은(는) 무엇을 하나요?
Spring Data JPA를 사용하여 영속성 레이어를 구현하기 위한 패턴을 제공합니다. 리포지토리 생성, 엔티티 관계 설정, 파생 쿼리 및 @Query 작성, 페이지네이션, 데이터베이스 감사, 트랜잭션, UUID 기본 키, 다중 데이터베이스, 데이터베이스 인덱싱을 설정할 때 사용합니다.
주요 기능
- 리포지토리 생성:
JpaRepository를 상속받아 기본 CRUD 작업을 자동으로 제공합니다. - 엔티티 관계 설정:
@OneToOne,@OneToMany,@ManyToOne,@ManyToMany를 사용한 관계 매핑. - 파생 쿼리: 메서드 이름만으로 쿼리를 자동 생성합니다 (예:
findByName,findByAgeGreaterThan). @Query애노테이션: JPQL 또는 네이티브 SQL을 사용한 사용자 정의 쿼리.- 페이지네이션 및 정렬:
Pageable과Sort객체를 사용한 데이터 페이징 및 정렬. - 데이터베이스 감사:
@CreatedDate,@LastModifiedDate,@CreatedBy,@LastModifiedBy애노테이션을 통한 자동 감사. - 트랜잭션 관리:
@Transactional을 사용한 선언적 트랜잭션 경계 설정. - UUID 기본 키:
UUID타입의 기본 키 생성 및 사용 방법. - 다중 데이터베이스: 여러 데이터 소스와 각각의
EntityManagerFactory및TransactionManager구성. - 데이터베이스 인덱싱:
@Index애노테이션을 사용한 인덱스 생성 및 성능 최적화.
사용 예시
리포지토리 인터페이스
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByLastName(String lastName);
Page<User> findByAgeGreaterThan(int age, Pageable pageable);
}
엔티티 간 관계
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<Order> orders;
}
@Query 애노테이션 사용
@Query("SELECT u FROM User u WHERE u.email = :email")
User findByEmail(@Param("email") String email);
지원하는 도구
- Claude Code
- Cursor
- Codex
- 기타 AI 에이전트
시작하기
- 프로젝트에 Spring Data JPA 의존성을 추가하세요 (Maven 또는 Gradle).
application.yml또는application.properties에 데이터베이스 연결 정보를 설정하세요.- 엔티티 클래스와 리포지토리 인터페이스를 생성하고, 필요한 비즈니스 로직을 구현하세요.
- 이 스킬의 패턴을 따라 일관된 방식으로 영속성 레이어를 구축하세요.
참고 사항
- 모든 예제는 Spring Boot 3.x 이상과 Java 17 이상을 기준으로 합니다.
- 데이터베이스 특화 기능 (예: MySQL의
@Index)은 해당 데이터베이스 방언(dialect)에 따라 달라질 수 있습니다. - 트랜잭션 관리는 서비스 레이어에서 처리하는 것을 권장합니다.