[英]MongoDB Java Driver Jackson Mapper MongoJack
我正在尋找實現以下目標的最行業標准方法。 我正在編寫一個Java應用程序,它將在MongoDB中管理文檔。 到目前為止,我所讀的一切都指向使用Mongo Java驅動程序(3.0)連接到數據庫,然后使用Jackson Object Mapper將JSON映射到Class以便於操作。 然后使用json.org:
JSONObject json = new JSONObject(mapper.writeValueAsString(user));
讓它回到Mongo。
Document doc1 = Document.parse(json.toString());
collection.insertOne(doc1)
因此,使用新的3.0驅動程序后,情況發生了一些變化,因為不再建議使用DBObject。
那么從Mongo獲取文檔的最佳方法是編輯並更新它們,然后保存更新的文檔。
MongoCollection<Document> collection = database.getCollection("mycoll");
請問:
MongoCollection<BasicDBObject> collection = database.getCollection("mycoll", BasicDBObject.class);
MongoCollection<MyObject> collection = database.getCollection("mycoll", MyObject.class);
MyObject功能是否消除了使用對象映射的需要?
如您所見,我現在有些困惑,要弄清最好的任何幫助就是針對Driver 3.0>這樣做會很棒。
當前可用的最新MongoJack(從2015年11月開始為2.5.1)仍使用現已棄用的DBCollection(從MongoDb驅動程序3.0開始)。
因此,您仍然可以根據需要執行以下操作:
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
DB db = mongoClient.getDB("databaseName");
DBCollection coll = db.getCollection("my.collection");
JacksonDBCollection<MyDomainObject, String> wrapped =
JacksonDBCollection.wrap(coll, MyDomainObject.class, String.class);
在您的問題中,您提出了MongoDb驅動程序3.0的編解碼器注冊表功能,並且本質上是在問,由於本機驅動程序內置了此功能,MongoJack仍然有用嗎?
我還沒有編寫編解碼器,但是它似乎需要相當數量的樣板代碼-與MongoJack的簡單性相去甚遠。 看一下此博客文章中的示例。
我認為,新版本的MongoJack將利用驅動程序的編解碼器功能,並將其抽象為與當前版本的MongoJack一樣簡單的東西。 我已經在MongoJack github項目上發布了一個與此有關的問題 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.