Spring Data

2025. 3. 7. 12:43Spring Boot/Spring Data JPA

Spring Data가 지원하는 기술

Spring Data는 ORM (JPA) 뿐만 아니라 NoSQL 데이터베이스도 지원합니다.
즉, 관계형 데이터베이스(RDBMS)와 비관계형 데이터베이스(NoSQL)를 모두 쉽게 사용할 수 있도록 해줍니다. 🚀

📌 1. Spring Data가 지원하는 주요 데이터 저장소

Spring Data는 JPA 기반 ORM뿐만 아니라 다양한 데이터 저장소를 지원합니다.

🔹 1) 관계형 데이터베이스 (RDBMS)

Spring Data JPA → Hibernate, EclipseLink, OpenJPA 등 ORM 프레임워크와 함께 사용
Spring Data JDBC → JPA보다 가벼운 방식으로 JDBC API를 직접 활용

기술 설명
Spring Data JPA Hibernate 등의 ORM 기술을 활용하여 JPA 엔티티와 함께 사용
Spring Data JDBC ORM 없이 간단한 JDBC 기반 데이터 접근을 지원
Spring Data R2DBC 리액티브(비동기) SQL 데이터베이스 연동 지원

🔹 2) NoSQL 데이터베이스

Spring Data는 MongoDB, Redis, Elasticsearch 같은 NoSQL 데이터베이스도 지원합니다.

NoSQL 기술 설명
Spring Data MongoDB 문서 지향 데이터베이스인 MongoDB 지원
Spring Data Redis 캐싱 및 키-값 저장소인 Redis 지원
Spring Data Cassandra 분산형 NoSQL 데이터베이스인 Cassandra 지원
Spring Data Couchbase JSON 기반 NoSQL 데이터베이스인 Couchbase 지원
Spring Data Neo4j 그래프 데이터베이스 Neo4j 지원
Spring Data Elasticsearch 검색 및 분석 엔진 Elasticsearch 지원

📌 2. JPA (RDBMS)와 MongoDB (NoSQL) 사용 예시

Spring Data를 사용하면 SQL과 NoSQL을 같은 방식으로 접근할 수 있음 💡

🔹 1) JPA를 사용하는 UserRepository (RDBMS)

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
    User findByEmail(String email);
}

JPA 기반 ORM 연동
User 엔티티를 관계형 데이터베이스 (MySQL, PostgreSQL 등)에 저장

🔹 2) MongoDB를 사용하는 UserRepository (NoSQL)

import org.springframework.data.mongodb.repository.MongoRepository;

public interface UserRepository extends MongoRepository<User, String> {
    User findByEmail(String email);
}

MongoDB 연동
User 엔티티를 NoSQL 문서형 데이터베이스 (MongoDB)에 저장

📌 3. JPA와 MongoDB를 함께 사용할 때 주의할 점

JPA와 MongoDB 같은 여러 데이터 저장소를 함께 사용할 때는 명확한 구분이 필요합니다.
같은 엔티티(User)를 JPA와 MongoDB에 동시에 사용하면 충돌 발생!

해결 방법
1️⃣ 각각의 Repository를 구분해서 사용

   @EnableJpaRepositories(basePackages = "com.example.jpa")
   @EnableMongoRepositories(basePackages = "com.example.mongo")
   public class AppConfig { }

2️⃣ 도메인 모델에 서로 다른 어노테이션을 사용

   @Entity  // JPA용
   class User { … }

   @Document  // MongoDB용
   class MongoUser { … }

📌 4. Summary

Spring Data는 관계형 데이터베이스(RDBMS)와 NoSQL을 모두 지원
JPA를 사용하면 Hibernate 같은 ORM을 통해 RDBMS와 연동 가능
MongoDB, Redis, Elasticsearch 등 다양한 NoSQL도 지원
JPA와 NoSQL을 함께 사용할 경우, Repository 및 도메인 모델을 명확히 구분해야 함

 

👉 Spring Data 덕분에 SQL과 NoSQL을 동일한 방식으로 쉽게 사용할 수 있음! 🚀

'Spring Boot > Spring Data JPA' 카테고리의 다른 글

Spring Data JPA  (0) 2024.10.24
JPA Query Methods  (0) 2024.10.23
Auditing  (0) 2024.10.22
OPTIMISTIC, OPTIMISTIC_FORCE_INCREMENT  (0) 2024.10.22
PESSIMISTIC_READ, PESSIMISTIC_WRITE  (0) 2024.10.22