【发布时间】:2015-01-19 11:21:10
【问题描述】:
我正在为 Java 中的 ODM 设计架构。我有一个带有顶级抽象Document 类的层次结构。 DB 对象的实现将扩展此类。
public abstract class Document {
ObjectId id;
String db;
String collection;
}
public class Student extends Document {
db = "School";
collection = "Student";
String name;
int age;
float gpa;
}
我希望每个类都能够为其关联的集合静态获取结果。例如,我想做类似Students.get(Students.class, new ObjectId(12345)) 的操作,它会从数据库中返回Student。请注意,我需要在get() 方法中指定类,这是我正在使用的对象映射器库(Morphia)的限制。
强制每个类都有这个get() 方法的最佳方法是什么?有几个限制:
-
get()应该作为静态方法实现 - 如果可能,我想避免冗余代码,并且不必为
get()的每个实现指定类。例如,如果我有一个Student和Teacher类,我想避免手动指定Students.class和Teacher.class。不过我不确定这是否可行,因为get()是一个静态方法。
我认为这是常见的abstract static Java 问题的变体,但我想确保我首先以正确的方式处理它。
【问题讨论】:
标签: java mongodb morphia nosql