본문 바로가기

Framework/Spring

[ Spring ] Spring Data - 스프링 데이터 프로젝트 알아보기

반응형


🌱 Spring Data란?

Spring Data는 데이터 액세스 계층을 더 쉽고 일관되게 개발할 수 있도록 도와주는 스프링 프로젝트 모음입니다.
JPA, MongoDB, Redis, Elasticsearch 등 다양한 데이터 저장소에 대해 일관된 방식으로 접근할 수 있도록 해줍니다.

Spring Data의 핵심은 데이터 저장소와 관련된 반복 코드를 줄이고, 비즈니스 로직에 집중할 수 있도록 하는 것입니다.


 

1. Spring Data의 주요 구성 요소

1. Spring Data Commons

  • Spring Data의 기반이 되는 공통 기능들을 포함합니다.
  • Repository 인터페이스, 쿼리 메서드, 페이징, 정렬 등 공통 API 제공

2. Spring Data JPA

  • JPA(Java Persistence API)를 쉽게 사용할 수 있게 해줍니다.
  • Hibernate, EclipseLink 같은 JPA 구현체와 함께 사용됩니다.

3. Spring Data JDBC / R2DBC

  • JPA 없이 순수 JDBC나 R2DBC를 통해 데이터베이스를 다룰 수 있습니다.

4. Spring Data MongoDB / Redis / Elasticsearch 등

  • 비관계형 데이터베이스(NOSQL)와 통합할 수 있는 프로젝트들이 포함됩니다.
  • 각각의 저장소에 맞는 Repository 구현과 쿼리 기능 제공

 

2. Spring Data JPA 예시로 살펴보기

1. Repository 인터페이스 생성

public interface UserRepository extends JpaRepository<User, Long> {
    // 기본적인 CRUD 메서드 자동 제공
    Optional<User> findByUsername(String username); // 메서드 이름만으로 쿼리 생성
}

2. 도메인 엔티티 클래스

@Entity
public class User {
    @Id @GeneratedValue
    private Long id;

    private String username;
    private String email;
}

3. 서비스에서 사용

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public User register(String username, String email) {
        User user = new User();
        user.setUsername(username);
        user.setEmail(email);
        return userRepository.save(user);
    }
}

 

3. Spring Data의 핵심 기능

기능 설명
Repository 인터페이스만 정의하면 구현체는 자동 생성 JpaRepository, CrudRepository 등 상속만 하면 스프링이 알아서 구현해줍니다.
메서드 이름 기반 쿼리 생성 findByEmailAndStatus() 같은 메서드 이름만으로 자동 쿼리 생성
@Query 어노테이션 복잡한 JPQL, SQL을 직접 작성할 수 있음
페이징과 정렬 Pageable, Sort 인터페이스로 간단히 처리
Auditing 생성일/수정일 자동 기록 기능 제공 (@CreatedDate, @LastModifiedDate)

 

4. Spring Data 프로젝트 모음 (일부)

모듈 이름 설명
Spring Data JPA JPA 기반 ORM 지원
Spring Data JDBC 순수 JDBC 기반
Spring Data R2DBC 리액티브 방식 JDBC
Spring Data MongoDB MongoDB 통합 지원
Spring Data Redis Redis 연동
Spring Data Elasticsearch 검색 엔진 연동
Spring Data Envers 엔티티 변경 이력 추적 (Hibernate Envers 기반)

Spring Data는 다양한 데이터 소스에 대해 일관된 프로그래밍 모델을 제공하며, 개발자의 생산성을 높여주는 매우 유용한 프로젝트입니다.
특히 Spring Data JPA는 스프링 생태계에서 가장 널리 사용되는 데이터 접근 기술 중 하나입니다.

반응형