1. 程式人生 > >Mongodb 的ORM框架 Morphia 之 使用Morphia(對映物件)

Mongodb 的ORM框架 Morphia 之 使用Morphia(對映物件)

    Mapping Objects(對映物件)

           我們一旦註解了我們的物件,將有很大繁重的工作要做。現在我們要做的就是需要建立一個Morphia例項,告訴Morphia我們要對映那些類,然後我們就可以

     開始在Mongo文件和Java物件之間映射了。

             Create a Morphia instance(建立一個Morphia例項)

                  首先你要做的就是建立一個Morphia例項,並且告訴他你要對映的類。建議你僅建立一次Morphia例項,重複使用。

import com.google.code.morphia.Morphia;
...
Morphia morphia = new Morphia();
morphia.map(BlogEntry.class)
    .map(Author.class);
...

           你對映的任何一個類都將會進行驗證,如果由於某些原因你對映的類不合法將會丟擲一個MappingException異常。

           你也可以告訴Morphia去掃描一個包,對映包中的所有類。

...
morphia.mapPackage("my.package.with.only.mongo.entities");
...
        Advanced Usage(高階應用)

               手動的使用Morphia對映到DBObjects通過java驅動直接進行互動。一下是一些如何使用他的例項。

         Mapping a java for Persistence

              手動的使用Morphia對映到DBObjects通過java驅動直接進行互動。這是一個例項。

           讓我們說我們有一個部落格例項物件,我們想把它儲存到Mongo資料庫中的一個容器中。我們僅僅呼叫Morphia中的toDBObject()方法,把java物件傳入。

           我們可以把返回的DBObject物件直接儲存到Mongo中。

Morphia morphia = ...;
Mongo mongo = ...;
DB db = mongo.getDB("BlogSite");

BlogEntry blogEntry = ...; // this is our annotated object

// map the blog entry to a Mongo DBObject
DBObject blogEntryDbObj = morphia.toDBObject(blogEntry);

// and then save that DBObject in a Mongo collection
db.getCollection("BlogEntries").save(blogEntryDbObj);
    現在我們的部落格例項物件已經儲存到了Mongo中。

       Retrieving a java from MongoDB(從Mongo中回覆一個Java物件)

         現在讓我們看看另一個方法:建立一個Java物件從Mongo資料庫中的一個文件。這也非常簡單。我們僅僅呼叫Morphia中的fromDBObject()方法即可,傳入要返回的DBObject物件。

Morphia morphia = ...;
Mongo mongo = ...;
DB db = mongo.getDB("BlogSite");

String blogEntryId = ...; // the ID of the blog entry we want to load

// load the DBObject from a Mongo collection
BasicDBObject blogEntryDbObj = (BasicDBObject) db.getCollection("BlogEntries").findOne(new BasicDBObject("_id", new ObjectId(blogEntryId));

// and then map it to our BlogEntry object
BlogEntry blogEntry = morphia.fromDBObject(BlogEntry.class, blogEntryDbObj);
  就是這樣!Morphia移除了所有的容易出錯的程式碼,你需要手動的對映到/從你的Java物件。

  使用Morphia管理你的Mongdo中的Java物件的非常清楚的方法是使用DAO 支援。那個方法抽象Mongo和Morphia在一個數據訪問物件(DAO)內部,所以你的業務邏輯不用依賴Morphia。