일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- springboot
- Entity
- Docker
- 스네이크케이스
- 파스칼케이스
- OS
- java
- 태그없음
- MongoTemplate
- banner
- inmemory
- nginx
- spring
- websokcet
- for
- 자바란
- pdf변환
- linux
- 2중for
- 테이블정의서
- mongodb
- 반복
- javax
- jpa
- redis
- 케밥케이스
- spring-rest-docs
- 카멜케이스
- commons-fileupload
- 외부허용
Archives
- Today
- Total
겸쨔
[mongodb] Spring Data MongoDB 연동 본문
반응형
안녕하세요.
Spring에서 몽고디비를 연동해봅시다.
Spring Data MongoDB라는 라이브러리를 사용할거에요.
Maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
우선 몽고랑 매핑될 entity를 작성해볼게요.
보통 디비랑 왔다 갔다하는 애를 entity라고 하지요?
근데 몽고에선 Collection이라고 하는거 같긴 해요.
import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Document;
@Data
@Document(collection = "test") // 매핑할 컬렉션의 이름 지정
public class MongoTest {
private String id;
private String name;
}
그리고 몽고디비 설정 파일을 작성해볼게요.
import com.mongodb.ConnectionString;
import com.mongodb.MongoClientSettings;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import java.util.Collection;
import java.util.Collections;
@Configuration
@EnableTransactionManagement // 트랜잭션 관리 기능 활성화
public class Db2DataSourceConfig extends AbstractMongoClientConfiguration // 몽고디비 클라이언트 설정을 제공하는 스프링프레임워크 추상 클래스 {
// 사용할 디비 이름을 반환
@Override
protected String getDatabaseName() {
return "DB명";
}
public MongoClient mongoClient() {
// 접속할 host, port, DB명을 문자열로 기입
ConnectionString connectionString = new ConnectionString("mongodb://id:pwd@host:port/DB명");
// 세팅해줌
MongoClientSettings mongoClientSettings = MongoClientSettings.builder()
.applyConnectionString(connectionString)
.build();
// 인자로 세팅한 MongoClientSettings 할당 후 생성
return MongoClients.create(mongoClientSettings);
}
// 매핑할 대상 패키지 문자열로 기입
// 이 패키지 내의 도메인 객체가 MongoDB의 컬렉션과 매핑
public Collection getMappingBasePackages() {
return Collections.singleton("com.chat.core");
}
}
코드에 주석으로 설명을 달긴 했어요.
한 가지 눈 여겨 보셔야할건 getMappingBasePackages() 인데요.
위에서 작성한 몽고랑 매핑될 entity의 패키지 경로를 넣어 주시면 돼요.
코드를 보니 저렇게 해야 싱글톤으로 관리가 되는 것 같네요.
이 다음엔 repository를 만들어 볼게요.
MongoRepository를 상속 받아요.
제네릭 타입으로는 위에서 @Document를 넣어준 entity를 넣으면 돼요.
JPA랑 흡사하지요?
public interface TestRepository extends MongoRepository<MongoTest, String> {
}
이게 끝입니다.
jpa랑 마찬가지로 몽고에서도 MongoRepository에 여러가지 기본적인 함수가 있어요.
findById() 같은거요.
그리고 querydsl처럼 원하는 함수를 생성해줄 수 있는데요.
그건 다음 글에서 다룰게요.
반응형
'db > mongodb' 카테고리의 다른 글
[mongodb] 계정 및 권한 추가 (1) | 2024.07.22 |
---|---|
[mongodb] 외부 접속 허용 (0) | 2024.07.22 |
[mongodb] mongodb 동적 쿼리 - MongoTemplate (3) | 2024.07.22 |
[mongodb] 몽고디비란? (0) | 2024.07.22 |
[mongodb] 인증 설정 및 admin 패스워드 변경 (0) | 2024.07.22 |