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]