Поля JPA и базы данных Flex

"Гибкие поля" - это термин для изменения таблицы на сайте клиента, чтобы добавить дополнительные столбцы в таблицу для хранения пользовательских фрагментов информации о сущности этой таблицы. Мне было интересно, кто-нибудь имел дело с поддержкой этого механизма с помощью jpa, в частности eclipselink.

Мы хотим сделать это, потому что мы разрешаем фильтрацию базовых строк на основе значений в этих полях, указанных пользователем, и наличие этих полей в таблице ассоциаций приводит к нескольким соединениям псевдонимов с этой вспомогательной таблицей.

Очевидный подход (по крайней мере, мне кажется) состоит в том, чтобы определить аспект (ы), который вводит новые поля в объект сущности, а затем запускает динамическое плетение.

Мне было интересно, если кто-то сделал это, и если есть какие-либо проблемы, которые я не вижу, или предложения о других подходах.

2 ответа

Решение

Итак, если вы добавляете новые поля в вашу сущность, как бы вы использовали их в своем приложении? Вы бы также изменили код своих приложений / пользовательского интерфейса?

Самое простое решение, как правило, заключается в том, чтобы иметь карту свойств в вашей сущности, это позволяет добавлять новые свойства во время выполнения и позволяет приложению / пользовательскому интерфейсу обращаться к этим свойствам и запрашивать их, чтобы оно могло представлять их и разрешать редактирование и отображение. Вы можете сопоставить свойства, используя ElementCollection или OneToMany, с таблицей свойств.

Если вы хотите изменить существующую таблицу, которая будет более сложной, вам также необходимо обновить сопоставления JPA, либо отредактировав orm.xml и повторно развернув приложение, либо добавив сопоставления в SessionCustomizer или DescriptorCustomizer. EclipseLink также поддерживает VIRTUAL AccessMode, который позволяет сопоставлять столбец со свойством вместо поля или метода get/set.

Более грубый метод - обновить код объектной модели и код приложения, чтобы использовать новые данные.

EclipseLink также предоставляет более динамичные решения для отображения динамических сущностей в таблицу, не требуя классов.

См. http://wiki.eclipse.org/EclipseLink/Examples/JPA/Dynamic

Я начал создавать пример, который иллюстрирует, как EclipseLink может использоваться с расширяемыми моделями (таблица ключевых значений или flex-столбцы). Эта работа еще не завершена, но я начал добавлять больше диаграмм и примеров кода на примерную вики-страницу:

http://wiki.eclipse.org/EclipseLink/Examples/JPA/Extensible

Это также включает использование динамической поддержки Джеймса, упомянутой выше.

Другие вопросы по тегам