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チュートリアル]