MongMongo是一個用Java寫的ODM架構,使得對MongoDB的操作更加便捷。
MongoMongo努力為Java開發人員提供類似於ActiveORM 或者 Hibernate的操作API,並且保留了MongoDB的schemaless,document-based 設計,動態查詢,原子修改操作等特性。當然你可以很方便的繞開MongoMongo而使用Java Driver 原生提供的功能。
下面是一段範例程式碼:
[java] view plain copy 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 塊中調用一個函數即可實現。如果你用一些動態語言,你會發現這種方法級聲明文法是非常流行,寫起來也非常舒服。
其實對於MongoDB相關的架構已經有很多,那麼MongoMongo的優勢何在。我們簡單做個代碼對比就一目瞭然了。
以 SpringData for MongoDB為例,典型的操作如下:
[java]