반응형
🌱 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는 스프링 생태계에서 가장 널리 사용되는 데이터 접근 기술 중 하나입니다.
반응형
'Framework > Spring' 카테고리의 다른 글
[ Spring ] Spring batch - 스프링 배치 알아보기 (0) | 2025.03.23 |
---|---|
[ Spring ] Spring security - 스프링 시큐리티 알아보기 (0) | 2025.03.23 |
[ Spring ] Spring Boot - 스프링 부트 알아보기 (0) | 2025.03.23 |
[ Spring ] 스프링 프로젝트들을 간략하게 알아보기 (0) | 2025.03.23 |
[ Spring ] Business Layer - 스프링 모듈의 비지니스 레이어 알아보기 (0) | 2025.03.23 |