Статьи

Создайте проект Spring-Data с MongoDB менее чем за 5 минут, используя Netbeans 7 и Maven

Spring-Data — это быстро развивающийся проект, который поддерживает многие технологии, такие как нереляционные базы данных, структуры сокращения карт и облачные службы данных, а также обеспечивает поддержку реляционных баз данных. Сегодня я собираюсь сосредоточиться на их поддержку для MongoDB .

Примечание: я собираюсь позаимствовать стартовый код из документации Spring-Data. Однако я буду менять версию с M3 на M4, и текущая документация Spring-Data предполагает M3 (на момент написания этой статьи), и похоже, что они сделали некоторые изменения пространства имен с M3 на M4, поэтому я исправляю это в код для этой статьи. Однако к тому времени, когда вы прочитаете это, документация на их сайте может быть обновлена ​​до M4 или новее.

Я использую Netbeans 7 с поддержкой Maven для создания и запуска проекта.

С Netbeans создайте новое Java-приложение Maven под названием: SpringDataMongoDB

Измените файл pom.xml, добавив следующий новый репозиторий:

<repositories>
  <repository>
    <id>spring-milestone</id>
    <name>Spring Maven MILESTONE Repository</name>
    <url>http://maven.springframework.org/milestone</url>
  </repository>
</repositories>

Нам также необходимо добавить одну зависимость в pom.xml :

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>1.0.0.M4</version>
</dependency>

Мой полный файл POM выглядит так:

<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>com.giantflyingsaucer</groupId>
    <artifactId>SpringDataMongoDB</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
 
    <name>SpringDataMongoDB</name>
    <url>http://maven.apache.org</url>
 
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
 
    <repositories>
        <repository>
            <id>spring-maven-release</id>
            <name>Spring Maven Release Repository</name>
            <url>http://maven.springframework.org/release</url>
        </repository>
        <repository>
            <id>spring-maven-milestone</id>
            <name>Spring Maven Milestone Repository</name>
            <url>http://maven.springframework.org/milestone</url>
        </repository>
    </repositories>
 
    <dependencies>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-mongodb</artifactId>
            <version>1.0.0.M4</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

Когда Netbeans генерирует новый проект, он по умолчанию создает файл с именем: App.java

Измените файл App.java следующим образом:

package com.giantflyingsaucer;
 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
import com.mongodb.Mongo;
 
import java.net.UnknownHostException;
 
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
 
public class App
{
    private static final Log log = LogFactory.getLog(App.class);
 
    public static void main( String[] args )
    {
        try {
            MongoOperations mongoOps = new MongoTemplate(new Mongo(), "mydb");
            mongoOps.insert(new Person("Joe", 34));
            log.info(mongoOps.findOne(new Query(Criteria.where("name").is("Joe")), Person.class));
            mongoOps.dropCollection("person");
        }
        catch(UnknownHostException ex) {
            log.error(ex.getMessage());
        }
    }
}

С Netbeans щелкните правой кнопкой мыши на проекте и добавьте новый класс с именем: Person

Код Person.java — это очень простой POJO:

package com.giantflyingsaucer;
 
public class Person {
 
  private String id;
  private String name;
  private int age;
 
  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }
 
  public String getId() {
    return id;
  }
  public String getName() {
    return name;
  }
  public int getAge() {
    return age;
  }
 
  @Override
  public String toString() {
    return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
  }
}

Добавьте файл log4j.properties в папку ресурсов. Вот то, что в документации Spring предлагается для начала:

log4j.rootCategory=INFO, stdout
 
log4j.appender.stdout=org.springframework.data.document.mongodb.log4j.MongoLog4jAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n
log4j.appender.stdout.host = localhost
log4j.appender.stdout.port = 27017
log4j.appender.stdout.database = logs
log4j.appender.stdout.collectionPattern = %X{year}%X{month}
log4j.appender.stdout.applicationId = my.application
log4j.appender.stdout.warnOrHigherWriteConcern = FSYNC_SAFE
 
log4j.category.org.apache.activemq=ERROR
log4j.category.org.springframework.batch=DEBUG
log4j.category.org.springframework.data.document.mongodb=DEBUG
log4j.category.org.springframework.transaction=INFO

Моя окончательная структура проекта выглядит следующим образом:

С помощью Maven выполните очистку и сборку проекта (вы можете сделать это в Netbeans 7, щелкнув правой кнопкой мыши проект и выбрав эту опцию).

На этом этапе вам нужно запустить MongoDB, ознакомьтесь с документами о том, как это сделать, и когда он работает на вашем компьютере, выполните последний шаг ниже.

После запуска MongoDB вы можете запустить проект.

Ожидаемые результаты:

[exec:exec]
Oct 30, 2011 9:18:14 PM com.giantflyingsaucer.App main
INFO: Person [id=4eae056603640e4e098501f7, name=Joe, age=34]

 

С http://www.giantflyingsaucer.com/blog/?p=3363