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中。
現在我們的部落格例項物件已經儲存到了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);
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。