[mongodb][java] Java Driverのオブジェクトに変換するmapperを書いてみた

前回JMongoStoreを作った際、HTTP Sessionに格納したオブジェクトをMongoDBに保存する為、JavaのオブジェクトとJava DriverのDBObjectとを相互変換するクラスを書きました。今回、それを別のモジュールとして切り出してmonganezという名前でgithubにアップしました。

特徴

  • Map/Iterable/POJOとDBObjectを相互変換する
  • 事前に変換対象となるクラスの型をmapperに通知しておく必要がない
  • ネストしたオブジェクトも自動的にDBObjectに変換する(←今回はこれがやりたかった)
  • (今のところ)変換対象のクラスにAnnotationを付与する必要がない

ついでにMaven Repositoryを作成してjarをアップしました。JMongoStoremonganezを使うように変更しています。使い方は以下のとおりです。

Java Object -> DBObject
Foo foo = new Foo();
...
DBObjectEncoder encoder = new DBObjectEncoder();
collection.save(encoder.encode(foo));
DBObject -> Java Object
DBObjectDecoder decoder = new DBObjectDecoder();
DBObject dbObject = collection.findOne(query);
Foo foo = (Foo)decoder.toObject(dbObject);

今のところ、MongoDBを操作したりクエリを発行する部分はJava Driverにお任せですが、時間を見つけて書いてみたいと思います。