Вместо реализации DBObject
или расширения одной из существующих реализаций как BasicDBObject
, вы можете иметь все объекты, которые могут быть сохранены в базе данных есть метод public DBObject toDBObject()
который создает и возвращает DBObject
представление объекта. BasicDBObject
- это Map<String, Object>
, который обрабатывает данные объекта как пары ключ/значение, поэтому он является хорошим кандидатом для этого.
Для получения более общего решения вы можете использовать reflection для создания метода, который может преобразовывать любой объект Java в объект DBObject. Чтобы иметь больше контроля над этим, вы могли бы составить некоторые аннотации, добавить их в свои классы и проверить свой метод конверсии.
Теперь вы создали свою собственную инфраструктуру отображения объектов для MongoDB. Но зачем изобретать колесо, когда другие уже это сделали? Поэтому перед тем, как вы это сделаете, проверьте, соответствуют ли существующие рамки отображения, например morphia, вашим прецедентом - они, вероятно, сделают это и сэкономит вам часы программирования и недели отладки.
[мнение]
Я обычно презираю объектно-реляционные картограф в контексте реляционных баз данных из-за impedance mismatch problem, но для гетерогенных баз данных, таких как MongoDB они делают гораздо больше смысла, потому что вы можете хранить объекты, которые имеют тот же базовый класс, но также и некоторые разные классы, относящиеся к той же таблице
без каких-либо уродливых обходных решений.
[/ мнение]
Было бы возможность расширить [BasicDBObject] (http://api.mongodb.org/java/1.3/com/mongodb/BasicDBObject.html) или подобное? –
@JoachimIsaksson да, я искал его. Благодарю. – hellzone
Рассматривали ли вы использование каркаса картера, таких данных весны или морфий? –