2025. 3. 7. 12:43ㆍSpring 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 |