MongMongo是一个用Java写的ODM框架,使得对MongoDB的操作更加便捷。
MongoMongo努力为Java开发者提供类似于ActiveORM 或者 Hibernate的操作API,并且保留了MongoDB的schemaless,document-based 设计,动态查询,原子修改操作等特性。当然你可以很方便的绕开MongoMongo而使用Java Driver 原生提供的功能。
public class Blog extends Document {
static {
storeIn("blogs");
hasManyEmbedded("articles", new Options(map(
Options.n_kclass, Article.class
)));
//create index
index(map("blogTitle", -1), map(unique,true));
//validate uerName field
validate("userName",map(length,map(
minimum,5
)));
}
//association related
public AssociationEmbedded articles() {throw new AutoGeneration();}
private String userName;
private String blogTitle;
}
public class Article extends Document {
static {
belongsToEmbedded("blog", new Options(map(
Options.n_kclass, Blog.class
)));
}
public AssociationEmbedded blog() {throw new AutoGeneration();}
private String title;
private String body;
}
public class Usage{
public static void main(String[] args){
Blog blog = Blog.where(map("userName","sexy java")).in(map("id",list(1,2,3))).singleFetch();
blog.articles().build(map("title","i am title","body","i am body"));
blog.save();
}
}
从上面代码中能够学习到关联,存储,创建索引,设置别名等操作都简单的在static 块中调用一个函数即可实现。
Spring-data的写法为
public static void main( String[] args )
{
MongoOperations mongoOps = new MongoTemplate(new Mongo(), "mydb");
Person person = new Person();
person.setName("Joe");
person.setAge(10);
mongoOps.insert(person);
log.info(mongoOps.findOne(new Query(Criteria.where("name").is("Joe")), Person.class));
}
而MongoMongo写法为
public static void main( String[] args )
{
Person person = Person.create(map("name","Joe","age",34));
person.save();
log.info(Person.where(map("name","Joe")).singleFetch());
}
从上面能够看出Spring-dat为了构造查询串引入Criteria对象,为了进行查询引入Query对象,查询时还要申明Person对象等,而MongoMongo写的比较简单而且清晰。
针对MongoDB非关系型数据库的操作框架有很多,在项目中也可以选择合适项目的比较关系,通过对比之后单独使用MongoMongo在代码易用性和清晰度上占优势,而其他的可能和其他框架集成上有优势,所以需要用到的时候做出正确的判断就可以了。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/lfsf802/article/details/49466929