본문 바로가기

전지적라온시점

Spring Data JPA 완전 정복 가이드 - 입문자를 위한 실무 중심 설명 본문

Development/JPA

Spring Data JPA 완전 정복 가이드 - 입문자를 위한 실무 중심 설명

최라온 2025. 5. 15. 16:03
728x90
반응형
SMALL

Spring Data JPA 완전 정복 가이드 - 입문자를 위한 실무 중심 설명

Spring Data JPA는 복잡한 SQL 없이도 데이터베이스 연동을 추상화할 수 있도록 도와주는 모듈입니다. JPA(Java Persistence API) 위에 구축된 스프링의 강력한 기능으로, 생산성과 유지보수성을 크게 향상시킵니다. 이 글에서는 입문자를 위한 JPA 개념부터 JpaRepository 실전 사용법까지 차근히 설명합니다.

1. JPA와 Spring Data JPA 차이

  • JPA: Java 진영의 ORM(Object-Relational Mapping) 표준
  • Hibernate: JPA 구현체 (실제로 사용하는 라이브러리)
  • Spring Data JPA: JPA 위에서 CRUD 로직을 자동화해주는 Spring 확장 프레임워크

2. 기본 구성 요소

  • @Entity: 테이블과 매핑되는 도메인 클래스
  • @Id: 기본 키 식별자
  • @Repository: JPA 인터페이스 정의
  • JpaRepository: CRUD 메서드 자동 제공

3. Entity 클래스 예제

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;
    private int age;
}

4. JpaRepository 사용 예

public interface UserRepository extends JpaRepository<User, Long> {

    List<User> findByName(String name);
    List<User> findByAgeGreaterThan(int age);
}

findBy, findBy...And..., findTop3By...와 같이 메서드 이름만으로 쿼리를 생성할 수 있는 것이 큰 장점입니다.

5. 기본 CRUD 메서드

  • save(): 삽입 또는 수정
  • findById(), findAll()
  • deleteById()
  • count(), existsById()

6. JPQL & Native Query

복잡한 쿼리는 직접 작성할 수도 있습니다.

@Query("SELECT u FROM User u WHERE u.age > :age")
List<User> findUsersOverAge(@Param("age") int age);

네이티브 SQL도 사용할 수 있습니다:

@Query(value = "SELECT * FROM user WHERE name = ?", nativeQuery = true)
List<User> nativeQueryExample(String name);

7. 트랜잭션 처리

Spring Data JPA는 @Transactional을 통해 데이터 변경 시 트랜잭션을 보장합니다. @Repository에 자동 적용되며, 서비스 계층에서 직접 지정하는 것이 일반적입니다.

8. 실무 팁

  • fetch join을 활용해 N+1 문제 해결
  • @Modifying + @Query로 벌크 연산 처리
  • Entity는 Setter를 최소화하고, 생성자/Builder 사용 권장
  • DTO 변환 시 Projection 또는 QueryDSL 검토

9. 결론

Spring Data JPA는 반복적인 CRUD 코드 없이 데이터베이스 작업을 효율적으로 처리할 수 있게 해주는 매우 강력한 도구입니다. Entity 설계부터 Repository 구성, 쿼리 작성까지 하나의 패턴으로 통일할 수 있어 생산성이 향상되고 유지보수도 쉬워집니다. 실무에 적용하기 위해서는 기본 규칙과 쿼리 구조를 철저히 이해하는 것이 중요합니다.

728x90
반응형
LIST