Spring DataでMongo DBへ接続する基本的な設定を解説

spring

Spring Dataを使って、Mongo DBへ接続する方法とクエリの発行手順を解説します。
Mongo DB接続用ライブラリが提供されているので、MySQL接続と同じような要領で出来ます。

[スポンサーリンク]

このページでやること

Spring Dataを使って、Mongo DBへ接続して簡単なクエリを発行する手順を解説します。

必要なライブラリ

pom.xmlへ以下のライブラリを設定して下さい。
ハイライトとなっている部分は必須のライブラリです。
あとのライブラリは、必要に応じて変更・追加して下さい。

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>1.2.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>2.2.2</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.framework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>${spring.framework.version}</version>
</dependency>
・
・

SpringのDI設定ファイル

module-context.xmlのMongoDBへ接続する設定方法です。
module-context.xmlのファイル名はプロジェクトによって異なります。
XXXの部分へMongoDBのDB(スキーマ)名を指定します。

    <mongo:mongo host="127.0.0.1" port="27017" />
    <mongo:db-factory dbname="XXX" mongo-ref="mongo" id="mongoDbFactory"/>
 
    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
        <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
    </bean>

MongoDBのコレクション(テーブル)クラス

MongoDBではテーブルのことをコレクションとよびます。
Spring DataでMongo DBへ接続する際は、このコレクションクラスが必要となります。
コレクションクラスとは、コレクションのフィールドをクラスにもたせたデータクラスです。

コレクションクラスは、@Documentでコレクションを宣言する必要があります。
Setter,Getterは必要ですが、ここでは省略しています。

@Document(collection = "history_collection")
public class Dto {
    @Id
    private String id;
 
    @Field("title")
    private String title;
}

MongoDBへ接続するDaoクラス

最後にMongoDBへ接続して、データを取得する方法を紹介します。
上記のコレクションから"title"で検索するロジックです。
MySQLでいうところの"title"を条件としたSelect文です。

    @Autowired
    private MongoTemplate mongoTemplate;

    public List<Dto> search(String title) {
        Query query = new Query();
        query.addCriteria(Criteria.where("title").is(title));
        List<Dto> list = mongoTemplate.find(query, Dto.class);
        return list;
    }

参考にしたサイト

さいごに

結構簡単だったと思います。
でもMongo DBってあまり使う機会ないよなーなんて思ったりもしています。Mongo DBよもっとメジャーになれ!
それでは!