MongoDB ODM Framework :MongoMongo-Simplifies your Storage

 MongoMongo is an Object-Document-Mapper (ODM) for MongoDB written in Java.

 The philosophy of MongoMongo is to provide a familiar API to Java developers who have been using ActiveORM or Hibernate, while leveraging the power of MongoDB's schemaless and performant document-based design,dynamic queries, and atomic modifier operations.

 

 

Sample code:

 

 

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();
  }

}

 

You can put assotiation,storage declare,index creating ,alias filed in static block of model,all can done by a method calling. Properties and Getter/Setter methods are optional.In sample code,pojo propertes declared make you know tha how many fields should be put in mongo collection.

 

There are already some ODM like morphia,SpringData.We can see diffrences bettween MongoMongo 

 

SpringData for MongoDB:

 

 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));
    }

 

 

Actually,most of java ODM operate model like this. Introduce Criteria Object for Query constructing, and Query Object for query. You also should tell 

MongoOperations who do you want to operate(here is Person.class). It's bit tough for index,alias,validation configuration,normaly they will put this infomation

on annotation,or som Configuration Object. MongMongo put all these in static block,using static method to declare,convenient,clear and easy to manager.

 

 MongoMongo code:

 

 

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()); 
 }

 

 

 

MongoMongo's query is similary with ActiveRecord in rails.

 

Blog blog = Blog.where(map("active",true)).in(map("id",list(1,2,3))).singleFetch();

 

Normally i will write like this:

public class Blog extends Document {
   public Criteria active(){
    return where(map("active",true));
   } 
}

 

then you can call it like this:

 

List<Blog> blogs = Blog.active().where(map("userName","jack")).fetch();

 

If you have used ActiveORM,then you will be familiar with MongMongo.

 

You also can MongoDB Java Driver directly  like this:

 

TTUser.collection().find(new BasicDBObject("tagName","cool"));

 

you can call static method collection() to get DBCollection Object.

 

Try MongoMongo according to this article: 5 steps to run a application on MongoMongo

 

 

 

 

 

 

 

你可能感兴趣的:(framework)