Для согласования состояний ui-plugin-ов помимо отправки событий возникнут моменты, когда будет необходимо сохранять состояние, которое необходимо передавать между различными ui-plugin-ами. Предполагается решать эту проблему с помощью еще одного модуля (н-р, назовем его SharedState), через который будет происходить чтение/запись некоторых ui-данных.
Требования:
- изменение в ui-plugin-е не должно требовать пересборки этого модуля (SharedState)
- возможность перелезть на другую бд нам не важна. ui-plugin-ы не будут использоваться в недесктопной версии приложения (по причине тесной связи с javafx-классами).
- завязывать модели на этот модуль строго не рекомендуется.
Решение:
Это означает, что решения типа jooq не подходят. Предпочтительна разработка от бизнес-логики, а не базы. Также это означает, что по причине слабой, но зависимости ui-plugin-ов друг от друга (сильную не делаем, чтобы один плагин не вешал другой) между ними может возникать несочетаемость. Это тоже надо учитывать при разработке ui-plugin-а.
- Новые entity будут подкладываться к SharedState через osgi-fragments, и находиться в пакете с конкретно-заданном названием
- Накатка базы create-update происходит каждый раз при старте модуля SharedState. Модуль находит все entity в конкретном пакете и по ним накатывает бд.
- Наружу выставляется api, которое скрывает часть работы с бд. Т.е. все entity и часть функционала для запросов.
Необходимо рассмотреть за и против в плане:
- реляционное решение: "hibernate+h2/hypersonic" или подобное
- нереляционное: "Xodus от JetBrains" или подобное
Для согласования состояний ui-plugin-ов помимо отправки событий возникнут моменты, когда будет необходимо сохранять состояние, которое необходимо передавать между различными ui-plugin-ами. Предполагается решать эту проблему с помощью еще одного модуля (н-р, назовем его SharedState), через который будет происходить чтение/запись некоторых ui-данных.
Требования:
Решение:
Это означает, что решения типа jooq не подходят. Предпочтительна разработка от бизнес-логики, а не базы. Также это означает, что по причине слабой, но зависимости ui-plugin-ов друг от друга (сильную не делаем, чтобы один плагин не вешал другой) между ними может возникать несочетаемость. Это тоже надо учитывать при разработке ui-plugin-а.
Необходимо рассмотреть за и против в плане: