搞技術的手藝人都有個習慣,沒事喜歡瞎折騰。我也不例外,懂點Java、ORM 之類的技術,最近又有點迷上了MongoDB,目前對MongoDB了解的還不算太多,但興趣到挺大。有句俗語:癮大水平低。通常是指某人某項技藝不高,但偏偏喜歡耍弄這項自己不精的技藝。這句話
搞技術的手藝人都有個習慣,沒事喜歡瞎折騰。我也不例外,懂點Java、ORM 之類的技術,最近又有點迷上了MongoDB,目前對MongoDB了解的還不算太多,但興趣到挺大。有句俗語:癮大水平低。通常是指某人某項技藝不高,但偏偏喜歡耍弄這項自己不精的技藝。這句話對我現在挺適合。
why
ORM給眾多的Javaer留下了很多美好的印象,原因只有一個“方便”,口水:雖然Hibernate也是ORM,但使用起來并不方便。
打算自己寫個類里面封裝一套CRUD的方法,用這個類去調用 BasicDBObject ,DBCursor 等一些MongoDB Java API 里面的類。 現在的想法暫且不是很完美,但是可以簡化一些web應用的開發,說一個場景:用戶輸入表單信息,將輸入的表單信息,通過action層轉換成表單對象,對象傳入Service層操作具體的業務邏輯,再傳入底層通過API操作MongoDB,這是一個常見的場景。
但是如果一個表單上有很多字段,那么對象到了操作MongoDB的時候將需要手工取出來,在一個個的put進去,一個頁面上有20、30個字段需要存入,這么一來一旦這樣的場景多了,我會崩潰的。如果還要來輸入的數據從MongoDB中在get出來,還要一個個的取,我會更加崩潰。。。。這樣的假象讓我不得不去折騰一下了。
場景如圖所示:
注釋:用戶通過HTML/JSP前端頁面提交參數,Action層將參數轉換成對象傳到 Service層,Service層再 傳 對象 到DAO層,DAO層 把對象轉換成參數 調用API ,到了調用底層API的時候需要一個個get/put參數,如果一多就是個悲劇啊。
how
就因為這樣讓我想到折騰可以進行的辦法,通過通過java反射加上SDK中注釋的功能,這樣可以靈活的操作,廢話少說,進行介紹具體怎么反射和采用注釋的折騰過程,主要思路如下:
1.主要實現程序 MyMongoDBORMImpl
class MyMongoDBORMImpl {
// 添加數據
public void addObject(Object clazz) { //傳入 new 對象,獲得表名和對象實例化參數
Map, ?> map= MappingTools.copyABeanToMap(clazz ); //調用自己寫的 映射工具
System.out.println(map );
Iterator> val=map.values().iterator(); // 通過反射得到 new 對象中的值
Iterator> key=map.keySet().iterator(); // 通過反射得到 new 對象中的屬性
BasicDBObject doc = new BasicDBObject();
while (key.hasNext()){
doc.put(key.next().toString() , val.next() ); // 對 MongoDB BasicDBObject 對象 進行賦值
}
coll.insert(doc);
}
}
2.測試程序 TestMongoDBORMCase
public class TestMongoDBORMCase {
public static void main(String[] args) throws Exception {
MyMongoDBORMImpl impl= new MyMongoDBORMImpl();
// 實例化Users 對象,并且插入
Users user= new Users();
user.setUsername("javabloger");
user.setId(12);
user.setPassword("www.javabloger.com ");
user.setDept("dept");
impl.addObject(user );
// 實例化TestPojo 對象,并且插入
TestPojo pojo1= new TestPojo();
pojo1.setIds(2);
pojo1.setUsernames("username–javabloger");
impl.addObject(pojo1 );
}
}
主要代碼介紹:
1.Users.java、TestPojo.java 是pojo對象,里面set/get一些參數值;
2.ORMappingTools.java 是pojo 對象和 MongoDB對象映射的工具類;
3.ColumnMapping.java 是 注釋程序,可以讓對象屬性和表屬性更加靈活;
4.MyMongoDBORMImpl.java 是一個封裝 MongoDB API 的程序;
5.TestMongoDBORMCase.java 測試程序。
詳細內容如圖所示:
從這里下載代碼 MongoDBJavaORM.zip
還可以從這里下載代碼 MongoDBJavaORM.zip
因為只是草稿,代碼有些粗糙里面只寫了一個添加的方法,主要想把精力還是在構思上,這也許只是個開始,有必要的話下面將寫一個小工具完善這個想法,給大家進行分享。
相關文章:
mongodb 入門 介紹
MongoDB 集群
Java操作 MongoDB NoSQL數據庫
–end–
原文地址:MongoDB Java ORM 的設想, 感謝原作者分享。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com