Spring Data MongoDB Hallo Weltbeispiel

Spring Data MongoDB Hallo Weltbeispiel

In diesem Tutorial zeigen wir Ihnen, wie Sie das Framework "http://www.springsource.org/spring-data/mongodb[SpringData for MongoDB]" verwenden, um CRUD-Operationen in MongoDB über Spring-Annotation und XML-Schema auszuführen.

Updated on 1/04/2013
Artikel wurde aktualisiert, um die neueste Version von SpringData v 1.2.0.RELEASE zu verwenden. Es war v1.0.0.M2.

Verwendete Tools und Technologien:

  1. Spring Data MongoDB - 1.2.0.RELEASE

  2. Federkern - 3.2.2.FREIGABE

  3. Java Mongo Treiber - 2.11.0

  4. Eclipse - 4.2

  5. JDK - 1.6

  6. Maven - 3.0.3

P.S Spring Data requires JDK 6.0 and above, and Spring Framework 3.0.x and above.

1. Projektstruktur

Eine klassische Java-Projektverzeichnisstruktur im Maven-Stil.

SpringData-helloworld-example

2. Abhängigkeit

Folgende Bibliotheken werden benötigt:

*spring-data-mongodb
Derzeit ist die JAR-Datei "spring-data-mongodb" nur in "http://maven.springframework.org/milestone" verfügbar. Sie müssen dieses Repository also auch deklarieren. *

Updated on 13/09/2012
spring-data-mongodb ist im zentralen Maven-Repository verfügbar, das Spring-Repository ist nicht mehr erforderlich.

pom.xml


    4.0.0
    com.example.core
    SpringMongoDBExample
    jar
    1.0
    SpringMongoExample
    http://maven.apache.org

    

        
        
            org.springframework
            spring-core
            3.2.2.RELEASE
        

        
            org.springframework
            spring-context
            3.2.2.RELEASE
        

        
        
            org.mongodb
            mongo-java-driver
            2.11.0
        

        
        
            org.springframework.data
            spring-data-mongodb
            1.2.0.RELEASE
        

        
            cglib
            cglib
            2.2.2
        

    

    
        
            
                maven-compiler-plugin
                3.0
                
                    1.6
                    1.6
                
            
            
                org.apache.maven.plugins
                maven-eclipse-plugin
                2.9
                
                    true
                    true
                
            
        
    

3. Federkonfiguration, Annotation und XML

Hier zeigen wir Ihnen zwei Möglichkeiten, Spring-Daten zu konfigurieren und eine Verbindung zu MongoDB über Annotation und XML-Schema herzustellen.

Hinweis
Siehe diese offizielle ReferenzConnecting to MongoDB with Spring.

3.1 Annotation
Erweitert dasAbstractMongoConfiguration ist der schnellste Weg, es hilft, alles zu konfigurieren, was Sie zum Starten benötigen, wie das Objekt vonmongoTemplate.

SpringMongoConfig.java

package com.example.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");
    }
}

Alternativ bevorzuge ich dieses, flexibler, um alles zu konfigurieren.

SpringMongoConfig1.java

package com.example.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;

    }

}

Und lade es mitAnnotationConfigApplicationContext:

    ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class);
    MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate");

3.2 XML Schema

SpringConfig.xml



    
    

    
        
    

Und fügen Sie es denGenericXmlApplicationContext des Frühlings hinzu:

   ApplicationContext ctx = new GenericXmlApplicationContext("SpringConfig.xml");
   MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate");

So, XML or Annotation?
Eigentlich machen beide dasselbe, es basiert nur auf persönlichen Vorlieben. Persönlich mag ich XML, um Dinge zu konfigurieren.

4. Benutzermodell

Ein Benutzerobjekt mit der Anmerkung @Document - welche Sammlung gespeichert werden soll. Später zeigen wir Ihnen, wie Sie Spring-Daten verwenden, um dieses Objekt an / von MongoDB zu binden.

User.java

package com.example.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. Demo - CRUD-Operationen

Vollständiges Beispiel, das zeigt, wie Sie Spring-Daten verwenden, um CRUD-Operationen in MongoDB auszuführen. Die Spring-Daten-APIs sind recht sauber und sollten selbsterklärend sein.

App.java

package com.example.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.example.config.SpringMongoConfig;
import com.example.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("example", "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("example"));

    // 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 listUser = mongoOperation.findAll(User.class);
    System.out.println("4. Number of user = " + listUser.size());

    }

}

Ausgabe

1. user : User [id=516627653004953049d9ddf0, username=example, password=password123]
2. find - savedUser : User [id=516627653004953049d9ddf0, username=example, password=password123]
3. updatedUser : User [id=516627653004953049d9ddf0, username=example, password=new password]
4. Number of user = 0

Quellcode herunterladen

Laden Sie es herunter -SpringMongoDB-HelloWorld-Example.zip (24 KB)