DATAMONGO-654 - Prepare 1.2.1.RELEASE.

Upgraded to Spring Data Build 1.0.3.RELEASE. Upgraded to Spring Data Commons 1.5.1.RELEASE. Updated changelog, notice and readme. Polished readme.md.
This commit is contained in:
Oliver Gierke
2013-04-17 11:28:46 +02:00
parent b47e8ca3da
commit 118a52a8d6
5 changed files with 100 additions and 78 deletions

133
README.md
View File

@@ -29,19 +29,13 @@ For those in a hurry:
* Download the jar through Maven:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.2.0.BUILD-SNAPSHOT</version>
</dependency>
<repository>
<id>spring-maven-snapshot</id>
<snapshots><enabled>true</enabled></snapshots>
<name>Springframework Maven SNAPSHOT Repository</name>
<url>http://maven.springframework.org/snapshot</url>
</repository>
```xml
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.2.1.RELEASE</version>
</dependency>
```
### MongoTemplate
MongoTemplate is the central support class for Mongo database operations. It provides
@@ -54,93 +48,98 @@ Future plans are to support optional logging and/or exception throwing based on
### Easy Data Repository generation
To simplify the creation of Data Repositories a generic Repository interface and default implementation is provided. Furthermore, Spring will automatically create a Repository implementation for you that adds implementations of finder methods you specify on an interface.
To simplify the creation of data repositories a generic `Repository` interface and default implementation is provided. Furthermore, Spring will automatically create a Repository implementation for you that adds implementations of finder methods you specify on an interface.
The Repository interface is
public interface Repository<T, ID extends Serializable> {
```java
public interface Repository<T, ID extends Serializable> {
T save(T entity);
T save(T entity);
List<T> save(Iterable<? extends T> entities);
List<T> save(Iterable<? extends T> entities);
T findById(ID id);
T findById(ID id);
boolean exists(ID id);
boolean exists(ID id);
List<T> findAll();
List<T> findAll();
Long count();
Long count();
void delete(T entity);
void delete(T entity);
void delete(Iterable<? extends T> entities);
void delete(Iterable<? extends T> entities);
void deleteAll();
}
void deleteAll();
}
```
The MongoRepository extends Repository and will in future add more Mongo specific methods.
The `MongoRepository` extends `Repository` and will in future add more Mongo specific methods.
public interface MongoRepository<T, ID extends Serializable> extends
Repository<T, ID> {
}
```java
public interface MongoRepository<T, ID extends Serializable> extends Repository<T, ID> {
}
```
SimpleMongoRepository is the out of the box implementation of the MongoRepository you can use for basid CRUD operations.
`SimpleMongoRepository` is the out of the box implementation of the `MongoRepository` you can use for basid CRUD operations.
To go beyond basic CRUD, extend the MongoRepository interface and supply your own finder methods that follow simple naming conventions such that they can be easily converted into queries.
To go beyond basic CRUD, extend the `MongoRepository` interface and supply your own finder methods that follow simple naming conventions such that they can be easily converted into queries.
For example, given a Person class with first and last name properties, a PersonRepository interface that can query for Person by last name and when the first name matches a regular expression is shown below
For example, given a `Person` class with first and last name properties, a `PersonRepository` interface that can query for `Person` by last name and when the first name matches a regular expression is shown below
public interface PersonRepository extends MongoRepository<Person, Long> {
```java
public interface PersonRepository extends MongoRepository<Person, Long> {
List<Person> findByLastname(String lastname);
List<Person> findByLastname(String lastname);
List<Person> findByFirstnameLike(String firstname);
}
List<Person> findByFirstnameLike(String firstname);
}
```
You can have Spring automatically generate the implemention as shown below
You can have Spring automatically create a proxy for the interface as shown below:
<bean id="template" class="org.springframework.data.document.mongodb.MongoTemplate">
<constructor-arg>
<bean class="com.mongodb.Mongo">
<constructor-arg value="localhost" />
<constructor-arg value="27017" />
</bean>
</constructor-arg>
<constructor-arg value="database" />
<property name="defaultCollectionName" value="springdata" />
</bean>
```xml
<bean id="template" class="org.springframework.data.document.mongodb.MongoTemplate">
<constructor-arg>
<bean class="com.mongodb.Mongo">
<constructor-arg value="localhost" />
<constructor-arg value="27017" />
</bean>
</constructor-arg>
<constructor-arg value="database" />
<property name="defaultCollectionName" value="springdata" />
</bean>
<bean class="org.springframework.data.document.mongodb.repository.MongoRepositoryFactoryBean">
<property name="template" ref="template" />
<property name="repositoryInterface" value="org.springframework.data.document.mongodb.repository.PersonRepository" />
</bean>
<mongo:repositories base-package="com.acme.repository" />
```
This will register an object in the container named PersonRepository. You can use it as shown below
This will find the repository interface and register a proxy object in the container. You can use it as shown below:
@Service
public class MyService {
``java
@Service
public class MyService {
@Autowired
PersonRepository repository;
@Autowired
private final PersonRepository repository;
public void doWork() {
public void doWork() {
repository.deleteAll();
repository.deleteAll();
Person person = new Person();
person.setFirstname("Oliver");
person.setLastname("Gierke");
person = repository.save(person);
Person person = new Person();
person.setFirstname("Oliver");
person.setLastname("Gierke");
person = repository.save(person);
List<Person> lastNameResults = repository.findByLastname("Gierke");
List<Person> lastNameResults = repository.findByLastname("Gierke");
List<Person> firstNameResults = repository.findByFirstnameLike("Oli*");
List<Person> firstNameResults = repository.findByFirstnameLike("Oli*");
}
}
}
}
```
Contributing to Spring Data

11
pom.xml
View File

@@ -15,7 +15,7 @@
<parent>
<groupId>org.springframework.data.build</groupId>
<artifactId>spring-data-parent</artifactId>
<version>1.0.2.RELEASE</version>
<version>1.0.3.RELEASE</version>
<relativePath>../spring-data-build/parent/pom.xml</relativePath>
</parent>
@@ -29,7 +29,7 @@
<properties>
<project.type>multi</project.type>
<dist.id>spring-data-mongodb</dist.id>
<springdata.commons>1.5.1.BUILD-SNAPSHOT</springdata.commons>
<springdata.commons>1.5.1.RELEASE</springdata.commons>
<mongo>2.10.1</mongo>
</properties>
@@ -88,12 +88,5 @@
<version>${mongo}</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>spring-libs-snapshot</id>
<url>http://repo.springsource.org/libs-snapshot</url>
</repository>
</repositories>
</project>

View File

@@ -1,6 +1,36 @@
Spring Data MongoDB Changelog
=============================
Changes in version 1.2.1.GA (2013-04-17)
----------------------------------------
** Bug
* [DATAMONGO-571] - Spring Data for MongoDb doesn't save null values when @Version is added to domain class
* [DATAMONGO-612] - Fix PDF reference documentation name
* [DATAMONGO-613] - Images missing from reference documentation
* [DATAMONGO-617] - NullPointerException in MongoTemplate.initializeVersionProperty(…)
* [DATAMONGO-620] - MongoTemplate.doSaveVersioned(…) does not consider collection handed into the method
* [DATAMONGO-621] - MongoTemplate.initializeVersionProperty(…) does not use ConversionService
* [DATAMONGO-622] - An unversioned object should be created using insert(…) instead of save.
* [DATAMONGO-629] - Different results when using count and find with the same criteria with 'id' field
* [DATAMONGO-638] - MappingContext should not create PersistentEntity instances for native maps
* [DATAMONGO-640] - MongoLog4jAppender suffers from potential NullPointerException when closing Mongo instance
* [DATAMONGO-641] - MongoLog4jAppender suffers from potential NullPointerException when closing Mongo instance
* [DATAMONGO-642] - MongoChangeSetPersister does not use mapped collection name
* [DATAMONGO-646] - Can't insert DBObjects through MongoTemplate
* [DATAMONGO-648] - ID attributes in namespace shouldn't be XSD IDs
** Improvement
* [DATAMONGO-594] - cross-store=> Define document name using annotation
* [DATAMONGO-632] - Polish namespace XSD to avoid errors in STS
* [DATAMONGO-635] - Fix some Sonar warnings
* [DATAMONGO-637] - Typo in Query.query(…)
* [DATAMONGO-651] - WriteResult not available from thrown Exception
* [DATAMONGO-656] - Potential NullPointerException when debugging in MongoTemplate
** Task
* [DATAMONGO-597] - Website is severely out-of-date
* [DATAMONGO-654] - Release 1.2.1
Changes in version 1.2.0.GA (2013-02-08)
----------------------------------------
** Bug

View File

@@ -1,4 +1,4 @@
Spring Data Document 1.1.2
Spring Data Document 1.2.1
Copyright (c) [2010-2013] SpringSource, a division of VMware, Inc.
This product is licensed to you under the Apache License, Version 2.0 (the "License").

View File

@@ -1,4 +1,4 @@
SPRING DATA MongoDB 1.0.0.M5
SPRING DATA MongoDB 1.2.1.GA
----------------------------
Spring Data MongoDB is released under the terms of the Apache Software License Version 2.0 (see license.txt).