Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux集群 > Architecture > » 正文

Spring Data MongoDB Integration

来源: elicer 分享至:
Spring Data MongoDB hello world example
In this tutorial, we show you how to do configure (both XML and annotation) and perform CRUD operations with “Spring Data for MongoDB” framework.

Tools and technologies used :

    Spring Data MongoDB – 1.0.0.M2
    Spring Core – 3.0.5.RELEASE
    Java Mongo Driver – 2.5.2
    Eclipse – 3.6
    JDK – 1.6
    Maven – 3.0.3
1. Dependency(pom.xml) 
  1. <project ...>  
  2.     <repositories>  
  3.         <repository>  
  4.             <id>spring-milestone</id>  
  5.             <name>Spring Maven MILESTONE Repository</name>  
  6.             <url>http://maven.springframework.org/milestone</url>  
  7.         </repository>  
  8.     </repositories>  
  9.    
  10.     <dependencies>  
  11.         <dependency>  
  12.             <groupId>junit</groupId>  
  13.             <artifactId>junit</artifactId>  
  14.             <version>4.8.2</version>  
  15.             <scope>test</scope>  
  16.         </dependency>  
  17.    
  18.         <!-- Spring framework -->  
  19.         <dependency>  
  20.             <groupId>org.springframework</groupId>  
  21.             <artifactId>spring-core</artifactId>  
  22.             <version>3.0.5.RELEASE</version>  
  23.         </dependency>  
  24.    
  25.         <dependency>  
  26.             <groupId>org.springframework</groupId>  
  27.             <artifactId>spring-context</artifactId>  
  28.             <version>3.0.5.RELEASE</version>  
  29.         </dependency>  
  30.    
  31.         <!-- mongodb java driver -->  
  32.         <dependency>  
  33.             <groupId>org.mongodb</groupId>  
  34.             <artifactId>mongo-java-driver</artifactId>  
  35.             <version>2.5.2</version>  
  36.         </dependency>  
  37.    
  38.         <dependency>  
  39.             <groupId>org.springframework.data</groupId>  
  40.             <artifactId>spring-data-mongodb</artifactId>  
  41.             <version>1.0.0.M2</version>  
  42.         </dependency>  
  43.    
  44.         <dependency>  
  45.             <groupId>cglib</groupId>  
  46.             <artifactId>cglib</artifactId>  
  47.             <version>2.2</version>  
  48.         </dependency>  
  49.    
  50.     </dependencies>  
  51.    
  52. </project>  

2.Two ways to configure Spring data for MongoDB.
Annotation

To use Spring annotation, declare the Spring mongoDB detail in a Java file :

File : SpringMongoConfig.java
 
  1. package com.mkyong.config;  
  2.    
  3. import org.springframework.context.annotation.Bean;  
  4. import org.springframework.context.annotation.Configuration;  
  5. import org.springframework.data.document.mongodb.MongoTemplate;  
  6. import org.springframework.data.document.mongodb.config.AbstractMongoConfiguration;  
  7. import com.mongodb.Mongo;  
  8.    
  9. /** 
  10.  * Spring MongoDB configuration file 
  11.  *  
  12.  */  
  13. @Configuration  
  14. public class SpringMongoConfig extends AbstractMongoConfiguration {  
  15.    
  16.     @Override  
  17.     public @Bean Mongo mongo() throws Exception {  
  18.    
  19.         return new Mongo("localhost");  
  20.     }  
  21.    
  22.     @Override  
  23.     public @Bean MongoTemplate mongoTemplate() throws Exception {  
  24.    
  25.         return new MongoTemplate(mongo(),"yourdb","yourCollection");  
  26.     }  
  27.    
  28. }  

And include it with Spring’s AnnotationConfigApplicationContext :
 
  1. ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class);  
  2.     MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate");  


XML

To use Spring XML, declare the Spring mongoDB detail in a XML file :
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:mongo="http://www.springframework.org/schema/data/mongo"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/context  
  7.           http://www.springframework.org/schema/context/spring-context-3.0.xsd  
  8.           http://www.springframework.org/schema/data/mongo  
  9.           http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd  
  10.           http://www.springframework.org/schema/beans  
  11.           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
  12.    
  13.     <!-- Default bean name is 'mongo' -->  
  14.     <mongo:mongo host="localhost" port="27017" />  
  15.    
  16.     <bean id="mongoTemplate"   
  17.                  class="org.springframework.data.document.mongodb.MongoTemplate">  
  18.         <constructor-arg ref="mongo" />  
  19.         <constructor-arg name="databaseName" value="yourdb" />  
  20.         <constructor-arg name="defaultCollectionName" value="yourCollection" />  
  21.     </bean>  
  22.    
  23.     <!-- To translate any MongoExceptions thrown in @Repository annotated classes -->  
  24.     <context:annotation-config />  
  25.    
  26. </beans>  

And include it with Spring’s AnnotationConfigApplicationContext : 
  1. ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class);  
  2.    ApplicationContext ctx = new GenericXmlApplicationContext("mongo-config.xml");  


3. User Model

An User object, later use Spring data to bind this object to / from MongoDB.

File : User.java 
  1. package com.mkyong.user;  
  2.    
  3. public class User {  
  4.    
  5.     private String id;  
  6.     private String firstname;  
  7.     private String lastname;  
  8.     private int age;  
  9.    
  10.     //getter and setter methods   
  11. }  

4. CRUD Operations

Full example to show you how to use Spring data to perform CRUD operations in mongoDB. The “user” object is saved into a collection named “userprofile“, under “yourdb” database.

The Spring data APIs are quite clean and should be self-explanatory.
Note
MongoTemplate implemented MongoOperations interface.
File : App.java 
  1. package com.mkyong.core;  
  2.    
  3. import java.util.List;  
  4.    
  5. import org.springframework.context.ApplicationContext;  
  6. import org.springframework.context.annotation.AnnotationConfigApplicationContext;  
  7. import org.springframework.context.support.GenericXmlApplicationContext;  
  8. import org.springframework.data.document.mongodb.MongoOperations;  
  9. import org.springframework.data.document.mongodb.query.Criteria;  
  10. import org.springframework.data.document.mongodb.query.Query;  
  11. import org.springframework.data.document.mongodb.query.Update;  
  12. import com.mkyong.config.SpringMongoConfig;  
  13. import com.mkyong.user.User;  
  14.    
  15. public class App  
  16. {  
  17.    
  18.     public static void main( String[] args )  
  19.     {  
  20.         //For Annotation  
  21.         ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class);  
  22.    
  23.         //For XML  
  24.         //ApplicationContext ctx = new GenericXmlApplicationContext("mongo-config.xml");  
  25.    
  26.         MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate");  
  27.    
  28.         User user = new User("1001""yong""mook kim"30);  
  29.    
  30.         //save  
  31.         mongoOperation.save("userprofile",user);  
  32.    
  33.         //find  
  34.         User savedUser = mongoOperation.findOne("userprofile",  
  35.                 new Query(Criteria.where("id").is("1001")),  
  36.                 User.class);  
  37.    
  38.         System.out.println("savedUser : " + savedUser);  
  39.    
  40.         //update  
  41.         mongoOperation.updateFirst("userprofile",  
  42.                 new Query(Criteria.where("firstname").is("yong")),   
  43.                 Update.update("lastname""new lastname"));  
  44.    
  45.         //find  
  46.         User updatedUser = mongoOperation.findOne("userprofile",  
  47.                 new Query(Criteria.where("id").is("1001")),  
  48.                 User.class);  
  49.    
  50.         System.out.println("updatedUser : " + updatedUser);  
  51.    
  52.         //delete  
  53.         mongoOperation.remove("userprofile",  
  54.                 new Query(Criteria.where("id").is("1001")),  
  55.                 User.class);  
  56.    
  57.         //List  
  58.         List<User> listUser =    
  59.             mongoOperation.getCollection("userprofile", User.class);  
  60.         System.out.println("Number of user = " + listUser.size());  
  61.    
  62.     }  
  63.    
  64. }  

5:Output
 
  1. savedUser : User [id=1001, firstname=yong, lastname=mook kim, age=30]  
  2. updatedUser : User [id=1001, firstname=yong, lastname=new lastname, age=30]  
  3. Number of user = 0  

Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史