MongoDB 是一个可扩展的、高性能的、开源的NoSQL数据库,跟传统的数据库不一样,MongoDB并不是将数据存储在表中,他将数据结构化为一个类似于JSON的文档中。这篇文章就是展示如何使用Java基于MongoDB和Spring Data创建一个CRUD应用。?
?
Spring Data for MongoDB
Spring Data for MongoDB提供了一个类似于基于Sping编程模型的NoSQL数据存储。Spring Data for MongoDB提供了很多特性,它使很多MongoDB的Java开发者解放了很多。MongoTemplate helper类支持通用的Mongo操作。它整合了文档和POJO之间的对象映射。通常,他会转换数据库访问异常到Spring中的异常结构。使用起来非常的方便。
你可以点击这里下载。
五步使用Spring Data创建一个应用。
使用@Document注解指明一个领域对象将被持久化到MongoDB中。@Id注解identifies。
package com.orangeslate.naturestore.domain;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document
public class Tree {
	@Id
	private String id;
	private String name;
	private String category;
	private int age;
	public Tree(String id, String name, int age) {
		this.id = id;
		this.name = name;
		this.age = age;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getCategory() {
		return category;
	}
	public void setCategory(String category) {
		this.category = category;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Person [id=" + id + ", name=" + name + ", age=" + age
				+ ", category=" + category + "]";
	}
}
?创建一个简单的接口。创建一个简单的接口,这个接口带有CRUD方法。这里我还带有createCollection方法和dropCollection方法。
?
?
?
?
package com.orangeslate.naturestore.repository;
import java.util.List;
import com.mongodb.WriteResult;
public interface Repository<T> {
	public List<T> getAllObjects();
	public void saveObject(T object);
	public T getObject(String id);
	public WriteResult updateObject(String id, String name);
	public void deleteObject(String id);
	public void createCollection();
	public void dropCollection();
}
?创建一个指定的领域对象CRUD的实现。
package com.orangeslate.naturestore.repository;
import java.util.List;
import org.springframework.data.mongodb.core.MongoTemplate;
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.mongodb.WriteResult;
import com.orangeslate.naturestore.domain.Tree;
public class NatureRepositoryImpl implements Repository<Tree> {
	MongoTemplate mongoTemplate;
	public void setMongoTemplate(MongoTemplate mongoTemplate) {
		this.mongoTemplate = mongoTemplate;
	}
	/**
	 * Get all trees.
	 */
	public List<Tree> getAllObjects() {
		return mongoTemplate.findAll(Tree.class);
	}
	/**
	 * Saves a {<span class="referer">@link</span>  Tree}.
	 */
	public void saveObject(Tree tree) {
		mongoTemplate.insert(tree);
	}
	/**
	 * Gets a {<span class="referer">@link</span>  Tree} for a particular id.
	 */
	public Tree getObject(String id) {
		return mongoTemplate.findOne(new Query(Criteria.where("id").is(id)),
				Tree.class);
	}
	/**
	 * Updates a {<span class="referer">@link</span>  Tree} name f