SpringデータMongoDB hello worldの例
このチュートリアルでは、MongoDBでSpringのアノテーションとXMLスキーマを使用してCRUD操作を実行するための、 “http://www.springsource.org/spring-data/mongodb[SpringData for MongoDB]”フレームワークの使用方法を説明します。
使用されるツールと技術:
-
SpringデータMongoDB – 1.2.0.RELEASE
-
スプリングコア – 3.2.2.RELEASE
-
Java Mongo Driver – 2.11.0
-
Eclipse – 4.2
-
JDK – 1.6
-
Maven – 3.0.3
__P.S Springデータには、JDK 6.0以上、Spring Framework 3.0.x以上が必要です。
1.プロジェクトの構成
古典的なMavenのスタイルのJavaプロジェクトディレクトリ構造。

2.依存関係
以下のライブラリが必要です:
spring-data-mongodb**
現在のところ、 “spring-data-mongodb” jarファイルは ”
http://maven.springframework.org/milestone
“でのみ利用可能ですので、このリポジトリも宣言する必要があります。**
-
2012年13月9日更新** + `spring-data-mongodb`はMavenセントラルリポジトリで利用可能です。Springリポジトリはもはや必要ありません。
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4__0__0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mkyong.core</groupId>
<artifactId>SpringMongoDBExample</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>SpringMongoExample</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- Spring framework -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.2.RELEASE</version>
</dependency>
<!-- mongodb java driver -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.11.0</version>
</dependency>
<!-- Spring data mongodb -->
<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>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
</plugins>
</build>
</project>
3.春の設定、注釈、XML
ここでは、Springデータを設定し、MongoDBに注釈とXMLスキーマを介して接続する2つの方法を示します。
注+この公式のリファレンスhttp://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/mongo.core.html#mongodb-connectors[SpringでMongoDBに接続]を参照してください。
-
3.1 Annotation ** +
AbstractMongoConfiguration`を拡張するのが最も速いので、
mongoTemplate`オブジェクトのように、開始する必要があるすべてを設定するのに役立ちます。
SpringMongoConfig.java
package com.mkyong.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
@Configuration
public class SpringMongoConfig extends AbstractMongoConfiguration {
@Override
public String getDatabaseName() {
return "yourdb";
}
@Override
@Bean
public Mongo mongo() throws Exception {
return new MongoClient("127.0.0.1");
}
}
あるいは、私はこれを好み、すべてを構成するのに柔軟性があります。
SpringMongoConfig1.java
package com.mkyong.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
import com.mongodb.MongoClient;
@Configuration
public class SpringMongoConfig1 {
public @Bean
MongoDbFactory mongoDbFactory() throws Exception {
return new SimpleMongoDbFactory(new MongoClient(), "yourdb");
}
public @Bean
MongoTemplate mongoTemplate() throws Exception {
MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory());
return mongoTemplate;
}
}
そして `AnnotationConfigApplicationContext`でそれをロードします:
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class);
MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate");
-
3.2 XMLスキーマ**
SpringConfig.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<mongo:mongo host="127.0.0.1" port="27017"/>
<mongo:db-factory dbname="yourdb"/>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>
</beans>
そしてそれをSpringの `GenericXmlApplicationContext`に含めてください:
ApplicationContext ctx = new GenericXmlApplicationContext("SpringConfig.xml");
MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate");
-
XMLや注釈?** 実際には、どちらも同じことをしています。それは単に個人的な好みに基づいています。個人的には、私は物事を構成するXMLが好きです。
4.ユーザーモデル
アノテーションされた@Document – 保存するコレクション。その後、Springデータを使用してこのオブジェクトをMongoDBとバインドする方法を示します。
User.java
package com.mkyong.model;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "users")
public class User {
@Id
private String id;
String username;
String password;
//getter, setter, toString, Constructors
}
5.デモ – CRUD操作
Springデータを使用してMongoDBでCRUD操作を実行する方法を示す完全な例。 SpringのデータAPIはきれいであり、自明でなければなりません。
App.java
package com.mkyong.core;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import com.mkyong.config.SpringMongoConfig;
import com.mkyong.model.User;//import org.springframework.context.support.GenericXmlApplicationContext;
public class App {
public static void main(String[]args) {
//For XML
//ApplicationContext ctx = new GenericXmlApplicationContext("SpringConfig.xml");
//For Annotation
ApplicationContext ctx =
new AnnotationConfigApplicationContext(SpringMongoConfig.class);
MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate");
User user = new User("mkyong", "password123");
//save
mongoOperation.save(user);
//now user object got the created id.
System.out.println("1. user : " + user);
//query to search user
Query searchUserQuery = new Query(Criteria.where("username").is("mkyong"));
//find the saved user again.
User savedUser = mongoOperation.findOne(searchUserQuery, User.class);
System.out.println("2. find - savedUser : " + savedUser);
//update password
mongoOperation.updateFirst(searchUserQuery,
Update.update("password", "new password"),User.class);
//find the updated user object
User updatedUser = mongoOperation.findOne(searchUserQuery, User.class);
System.out.println("3. updatedUser : " + updatedUser);
//delete
mongoOperation.remove(searchUserQuery, User.class);
//List, it should be empty now.
List<User> listUser = mongoOperation.findAll(User.class);
System.out.println("4. Number of user = " + listUser.size());
}
}
出力
1. user : User[id=516627653004953049d9ddf0, username=mkyong, password=password123]2. find - savedUser : User[id=516627653004953049d9ddf0, username=mkyong, password=password123]3. updatedUser : User[id=516627653004953049d9ddf0, username=mkyong, password=new password]4. Number of user = 0
ソースコードをダウンロードする
ダウンロードする –
SpringMongoDB-HelloWorld-Example.zip
(24 KB)
参考文献
-
http://www.springsource.org/spring-data/mongodb
[Spring data for
MongoDB]。
http://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/mongo.core.html#mongodb-connectors
[Connecting
春のMongoDBへ]。
http://ofps.oreilly.com/titles/9781449323950/id2318796__07-mongodb.html
[Oreilly
春のデータmongodbチュートリアル]。
http://krams915.blogspot.com/2011/02/spring-data-mongodb-tutorial.html—Another
良い春のデータmongodbチュートリアル]