下面的代码给出错误,它说 School 类必须实现 DBObject 接口(interface)。问题是这个接口(interface)有很多方法。我有近 100 个类,我不想编写数百万个方法。有没有简单的方法来保存对象?
DBCollection table = db.getCollection("school");
School document = new School();
table.insert(document);
请您参考如下方法:
而不是实现 DBObject
或扩展现有的实现之一,例如 BasicDBObject
,您可以让所有可以保存在数据库中的对象都有一个方法 public DBObject toDBObject()
它创建并返回 DBObject
对象的表示。 BasicDBObject
是 Map<String, Object>
它将对象数据作为键/值对处理,因此它是一个很好的候选者。
对于更通用的解决方案,您可以使用 reflection创建一个可以将任何 Java 对象转换为 DBObject 的方法。为了更好地控制这一点,您可以编写一些注释,将它们添加到您的类中,并让您的转换方法检查它们。
现在您已经为 MongoDB 创建了自己的对象映射框架。但是,当其他人已经这样做时,为什么要重新发明轮子呢?因此,在执行此操作之前,请检查现有的映射框架是否像 morphia满足您的用例 - 它们很可能会满足您的需求,并且会为您节省数小时的编程时间和数周的调试时间。
[意见]
我通常鄙视关系数据库上下文中的对象关系映射器,因为 impedance mismatch problem ,但对于像 MongoDB 这样的异构数据库,它们更有意义,因为您可以在同一个
table
集合中存储具有相同基类但也有一些不同的类特定字段的对象,而无需任何丑陋的解决方法.
[/意见]