1. JPA와 NoSQL의 개념
JPA(Java Persistence API)
JPA는 관계형 데이터베이스(RDBMS)와 객체를 매핑하는 ORM(Object-Relational Mapping) 기술입니다. 대표적인 구현체로는 Hibernate, EclipseLink 등이 있으며, 관계형 데이터 모델을 기반으로 동작합니다.
NoSQL과 MongoDB
MongoDB는 대표적인 NoSQL 데이터베이스로, 관계형 데이터베이스와 달리 스키마 없이 JSON(BSON) 형식으로 데이터를 저장합니다.
- 테이블 대신 컬렉션(Collection)
- 행(Row) 대신 문서(Document) 구조 사용
- 수직적 확장(Scale-Out)에 유리함
2. JPA와 MongoDB를 함께 사용할 수 있을까?
JPA는 본래 관계형 데이터베이스(RDBMS)를 위한 ORM 기술이기 때문에,
JPA 자체로 MongoDB를 직접 사용할 수는 없습니다.
하지만 Spring Data MongoDB를 활용하면 Spring Data JPA와 함께 사용할 수 있는 구조를 만들 수 있습니다.
3. Spring Boot에서 JPA와 MongoDB 함께 사용하기
(1) 의존성 추가 (Gradle 기준)
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // JPA
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' // MongoDB
runtimeOnly 'org.postgresql:postgresql' // RDBMS 예제 (선택 사항)
}
(2) application.properties 설정
# 관계형 데이터베이스 설정 (JPA)
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update
# MongoDB 설정
spring.data.mongodb.uri=mongodb://localhost:27017/mydatabase
4. JPA 엔티티와 MongoDB 문서 작성
(1) JPA 엔티티 예제 (RDBMS)
import jakarta.persistence.*;
@Entity
public class User {
@Id @GeneratedValue
private Long id;
private String name;
}
(2) MongoDB 문서 예제
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "users")
public class UserDocument {
@Id
private String id;
private String name;
}
MongoDB에서는 @Entity 대신 @Document를 사용하며, ID는 기본적으로 String 타입입니다.
5. JPA와 MongoDB 저장소(repository) 설정
(1) JPA Repository (RDBMS)
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
User findByName(String name);
}
(2) MongoDB Repository
import org.springframework.data.mongodb.repository.MongoRepository;
public interface UserDocumentRepository extends MongoRepository<UserDocument, String> {
UserDocument findByName(String name);
}
MongoDB에서는 JpaRepository 대신 MongoRepository를 사용해야 합니다.
'Back-End > JPA' 카테고리의 다른 글
JPA 3.0에서 새롭게 추가된 기능들 정리 (0) | 2025.03.09 |
---|---|
JPA 엔티티 설계 시 VO(Value Object) 패턴 적용하기 (0) | 2025.03.09 |
JPA에서 지연 로딩과 즉시 로딩의 차이 및 활용법 (0) | 2025.03.09 |
JPA 트랜잭션 관리와 @Transactional의 동작 방식 (0) | 2025.03.09 |
JPA랑 Hibernate (0) | 2025.03.09 |