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]