본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


몽고DB/Java 몽고DB

Java Mongodb 연동, Java 몽고db 연동 (4.0이상 버전)

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2019. 11. 26.

 

몽고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 이상 버전을 사용할 예정이라면 이제는 몽고 클라이언트도 가져다 쓸 수 있게 해 주어야 한다는 점 이다.

 

자, 이제 트랜잭션한번 하러 가 보아야 겠다.

 

 

 

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글