2013-03-27 2 views
0

У меня есть «объект» проекта «Project», который включает в себя ряд «сложных» полей, например, упоминаемых как интерфейсы со многими различными возможными реализациями. Чтобы привести пример: интерфейс Property, с T практически любого типа (как многие типы, как я реализовал).JPA, сложные графы объектов и сериализация

Я использую JPA. Для этих полей у меня не было выбора, кроме как фактически сериализовать их для их хранения. Хотя мне не нужно использовать эти объекты в моих запросах, это, очевидно, приводит к некоторым проблемам, например, обслуживанию/обновлениям для начала.

У меня есть два вопроса:

1) Есть «трюк» Я мог бы рассмотреть, чтобы сохранить свою базу данных в актуальном состоянии в случае, если у меня есть «нарушение» изменение в моем сериализованном классе (большую часть времени сериализации изменения хорошо обрабатываются)?

2) перейдут на помощь JDO вообще? Я очень мало разбираюсь в JDO, но я понимаю, что с JDO, когда сериализованные объекты в таблицах никогда не произойдут (как обрабатываются изменения?). В поддержку 2) Я должен также добавить, что графические объекты, которые у меня есть, могут быть довольно сложными, возможно, с участием 10 таблиц, чтобы получить полный «проект», например.

ответ

0

JDO, очевидно, поддерживает постоянство полей интерфейса (но тогда DataNucleus JPA также позволяет их сохранение, но как расширение поставщика). Наличие некоторого поля интерфейса, являющегося одним из возможных типов, представляет проблемы для RDBMS, а не для JDO как такового. Базовое хранилище данных - это больше ваша проблема (неспособность адекватно отразить вашу модель), и один из многих других хранилищ данных может помочь вам в этом. Например, DataNucleus JDO/JPA поддерживает GAE/Datastore, Neo4j, MongoDB, HBase, ODF, Excel и т. Д. И просто сохраняет «id» связанного объекта в «столбце» (или эквиваленте) в представлении объекта-владельца ... поэтому такие изменения были бы намного меньше, чем у вас сейчас

Смежные вопросы