본문 바로가기

SPRING

[MONGODB+SPRING] 몽고디비+스프링 연계하기

안녕하세요.

정말 간단해서 간단 연동기..

제목 그대로 두개를 연동해보겠습니다.

샘플 프로젝트에 이것저것 붙이다보니 벌써 config 파일만 5개가 생겼네요.

그럼 연동 시작.

 

1. pom.xml

<dependency>
         <groupId>org.springframework.data</groupId>
         <artifactId>spring-data-mongodb</artifactId>
         <version>${mongodb-Spring-data.version}</version>
</dependency>

을 구성해주어야 합니다. 버젼은 1.7.1.RELEASE 로 구성했네요.

 

2. Java Config

@Configuration
@ComponentScan
@EnableMongoRepositories
public class MongodbConfig extends AbstractMongoConfiguration {

 @Override
 protected String getDatabaseName() {
  return "miller";
 }

 @Override
 public Mongo mongo() throws Exception {
  return new MongoClient("192.168.1.10", 27017);
 }
 
 @Override
 public String getMappingBasePackage() {
  return "com.ese.dwg.mongo";
 }

}

몽고 디비의 기본 포트는 27017 입니다.

"miller"는 데이터베이스 이름이구요. 만들어주지 않아도 생성됩니다.

몽고 디비는 Db-Collection-document 형태이기 때문에 어노테이션으로 VO를 매핑해줄 수 있습니다. 그래서 getMappingBasePackage를 아래와 같이 지정했습니다.

VO에는 어떻게 사용했는가에 대해서는

3. Mapping

@Document(collection="sensor")
public class Sensor {

 @Id
 public String id;
 public String deviceName;
 public String cate;
 public String value;
 public String regTime;
 public String getId() {
  return id;
 }

와 같이 @Document는 다큐먼트다! 그리고 sensor라는 collection과 Mapping 된다라고 표현하고 있습니다.

4. 서비스

 @Autowired
 MongoTemplate mongo;

 public List<Sensor> getSensor() {
  return mongo.findAll(Sensor.class, "sensor");
 }
}

서비스는 위와 같이 셋팅하면 됩니다. MongoTemplate 객체를 autowired해서 사용합니다. 그리도 저 MongoTemplate에 모든게 있습니다.

간단하게 조회할 수 있었으나!

당연히 삽질은 존재합니다.

몽고 디비는 지금 제가 작성했던 기준으로 1.7.1이 가장 stable한 버전입니다. 몽고디비에서 spring-data-commons의 클래스를 사용하는데 1.0.6버전에서는 NotFoundClass 에러가 뜨더군요. 작년에 만든 샘플 프로젝트라 ㅋㅋ..

그래서 찾아보니 1.10.0으로 올리고 문제를 해결하였습니다.

http://projects.spring.io/spring-data-mongodb/ 

여기서 설명이 잘 되어 있고 라이브러리도 다운 하실 수 있습니다.