Skip to main content
 首页 » 编程设计

mongodb之Mongodb如何保存对象

2024年02月23日25soundcode

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

DBCollection table = db.getCollection("school"); 
 
School document = new School(); 
table.insert(document); 

请您参考如下方法:

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

对于更通用的解决方案,您可以使用 reflection创建一个可以将任何 Java 对象转换为 DBObject 的方法。为了更好地控制这一点,您可以编写一些注释,将它们添加到您的类中,并让您的转换方法检查它们。

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

[意见]

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

[/意见]