先感謝同事梁員外<MongoDB with Morphia>的技術分享,下面是一些相關的筆記,當然啦,在應用Morphia之前需要有MongoDB的使用經驗.
What is Morphia?
Morphia is a lightweight type-safe library for mapping your Java objects to/from MongoDB
簡單的來說Morphia與MongoDB的關系就如Hibernate與關系數據庫的關系, 是一個實現Java對象到MongoDB雙向映射的類庫。
下面是摘自Morphia官方的簡介,帶有一定的廣告性,呵呵
Easy to use, and very lightweight; reflection is used once per type and cached.
Annotations describe mapping behavior; there are no XML files.
Provides Datastore and DAO<T,V> data access abstractions, or roll your own...
Type-safe Query support
Works with Guice, Spring, and other DI frameworks.
Has many extension points to build on
Does not store Null/Empty values (by default).
GWT support (entities are just POJOs) --(GWT ignores annotations)
Advanced mapper that allows raw conversion, void toObject(DBObject) or DBObject fromObject(Object)
下載 morphia.jar
將jar導入到工程后,看看mongodb和morphia的初始化
初始化Mongo(MongoDB Java Api)

初始化Morphia
在mapPackage需要制定一系列的pojo類
對POJO類進行存儲操作


以上代碼創建了兩個領域Hotel,Address,前者為實體存在,有自己的生命周期,后者則為內嵌在實體之中,沒有獨立的生命周期, 關于這些注解的詳細含義,以及Morphia提供的其他注解,請參見其官方文檔。
以下說說Morphia與Spring的結合

com.***.cvus.dao.MorphiaBean 是自己封裝的一個SpringBean類
public class MorphiaBean extends Morphia {
…
private Mongo mongo = null;
private String dbName = null;
public Datastore getDataStore() {
if (this.mongo == null || this.dbName == null) {
return null;
}
return createDatastore(mongo, dbName);
}
…
}
MorphiaBean的應用
DataStrore—查詢語法
直接ID查詢:
簡單條件查詢:

DataStrore—保存\刪除 語法
保存
刪除
Query—復雜查詢
Filter方法:

獲取第一個數據
獲取列表:
Query—排序,分頁
排序

分頁
UpdateOperaions—更新操作
執行語句
updateQuery:查詢條件(Class:Query)
ops:更新操作(Class:UpdateOperations)
ops( UpdateOperations )參數的語法:
http://code.google.com/docreader/#p=morphia&s=morphia&t=Updating
@Embedded & @Reference
http://code.google.com/docreader/#p=morphia&s=morphia&t=EmbeddedAnnotation
http://code.google.com/docreader/#p=morphia&s=morphia&t=ReferenceAnnotation
----------------------------------------
by 陳于喆
QQ:34174409
Mail: chenyz@corp.netease.com