Mongodb如何保存对象

时间:2013-07-07 20:03:31

标签: mongodb mongodb-java

下面的代码给出了错误,它说学校类必须实现DBObject接口。问题是这个界面有很多方法。我有近100课,我不想写数百万种方法。有没有简单的方法来保存对象?

DBCollection table = db.getCollection("school");

School document = new School();
table.insert(document);

1 个答案:

答案 0 :(得分:2)

不是实现DBObject或扩展现有实现之一,如BasicDBObject,您可以让所有可以保存在数据库中的对象都有一个方法public DBObject toDBObject(),它创建并返回一个DBObject对象的表示。 BasicDBObjectMap<String, Object>,它将对象数据作为键/值对处理,因此它是一个很好的候选对象。

对于更通用的解决方案,您可以使用reflection创建一个可以将任何Java对象转换为DBObject的方法。要对此进行更多控制,您可以编写一些注释,将它们添加到您的类中,然后让您的转换方法进行检查。

现在您已经为MongoDB创建了自己的对象映射框架。但是,当其他人已经完成它时,为什么要重新发明轮子呢?因此,在执行此操作之前,请检查现有的映射框架(如morphia)是否满足您的用例 - 他们可能会这样做,并且可以节省您的编程时间和数周的调试时间。

[意见]

由于impedance mismatch problem,我通常在关系数据库的上下文中鄙视对象关系映射器,但对于像MongoDB这样的异构数据库,它们更有意义,因为你可以存储具有相同基类的对象但是在同一个 table 集合中也有一些不同的特定于类的字段,没有任何丑陋的解决方法。

[/意见]