몽고DB가 4.0 이상 버전에서의 다양한 기능을 사용하려면 JAVA에서 지원하는 라이브러리 버전도 마찬가지로 올려주어야 한다.
구글링해서 나오는 연동 방법은 대부분 몽고드라이버 3.8 이하 버전때, 데이터 파싱을 담당하는 스프링데이터 2.1 이하 버전때를 사용해서 나오는 방법이다. * 2019.11.26 기준
* spring-data-mongodb : 2.1이하 버전
* mongo-java-driver : 3.8 이하 버전
그런데 4.0 이상의 몽고db의 기능을 좀 사용하려면 낮은 라이브러리를 사용하다보면 기능동작이 잘 안되는 경우가 존재 한다.
그리하여 해당 2개의 라이브러리 버전을 확 높여보았다.
* spring-data-mongodb : 2.2.1
* mongo-java-driver : 3.11.1
그리고나서 기존 방식으로 몽고db 객체를 생성하는 코드를 적용시켰더니..
디플리케이티드된 클래스가 되어버린 몽고템플릿을 만나게 되었다..
몽고db접속 방식이 라이브러리 버전이 올라가면서 바뀐 것이다.
뭐..당연히 바뀔 수 있다고 생각했지만..
재미있는 점은 저기 보이는 MongClient로 보이는 클래스가 한개가 더 늘어났는데 패키지명까지 포함된 내용이다.
* 기존 몽고 클라이언트 패키지명 : com.mongodb.MongoClient
* 새로 사용할 몽고 클라이언트 패키지명 : com.mongodb.client.MongoClient
왓..가운데 client 라는 패키지가 하나 더 추가되었다..
아무튼, 바뀐 연동방식은 그리 어렵지 않다.
import org.springframework.data.mongodb.core.MongoTemplate;
import com.mongodb.ConnectionString;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.MongoClientSettings;
public class MyMongo {
public void init() {
final String combineUrl = "mongodb://접속주소/데이터베이스명칭";
ConnectionString connString = new ConnectionString(combineUrl);
MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(connString)
.retryWrites(true)
.build();
MongoClient mongoClient = MongoClients.create(settings);
MongoTemplate template = new MongoTemplate(mongoClient, "데이터베이스명칭");
}
}
기존 몽고 템플릿을 활용한 방식과 내용이 조금 달라졌다.
여기서 몽고 클라이언트 객체에 주목할 필요가 있다.
몽고 클라이언트를 활용하면 트랜잭션을 활용한 객체 생성이 가능하여 진다. 몽고템플릿에는 없지만..
기존에 몽고템플릿만 사용하는 클래스를 만들었다면, 몽고db 4.0 이상 버전을 사용할 예정이라면 이제는 몽고 클라이언트도 가져다 쓸 수 있게 해 주어야 한다는 점 이다.
자, 이제 트랜잭션한번 하러 가 보아야 겠다.
'몽고DB > Java 몽고DB' 카테고리의 다른 글
Mongotemplate에서 배열값 관리 (Mongotemplate push, pull) (0) | 2020.05.13 |
---|---|
몽고DB 트랜잭션을 위한 리플리카 셋, 적용 테스트(Mongodb transaction, Mongodb replica set) (5) | 2019.11.26 |
MongoTemplate Aggregate 2 (lookup, unwind,first,last,push ..) (0) | 2019.09.06 |
MongoTemplate Aggregate 사용간 파싱 버그 (0) | 2019.07.19 |
MongoTemplate Aggregate (0) | 2019.06.21 |
댓글