Можно ли назначить несколько конфигураций ORM для модели Java? - PullRequest
0 голосов
/ 01 октября 2019

У нас такая ситуация: один бэкэнд написан на Spring. Одно нативное приложение для Android.

Они разделяют многие модели.

То, что было сделано, - это написание моделей в пакете на серверной части, а затем их экспорт в jar в Android.

На андроиде мы используем OrmLite для взаимодействия с этими моделями в БД. Модели имеют свои аннотации для достижения этой цели. На бэкэнде мы в основном пишем необработанные грубые запросы для каждой модели, это сходит с ума, так как каждый раз, когда мы добавляем поле, нам нужно обновить все соответствующие запросы.

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

Нам нужно сделать вещи умнее, но мы также хотели бы избежать дублирования моделей, чтобы просто переназначить модели в другую схему базы данных.

Есть ли у вас какие-нибудь идеи о том, как этого добиться?

1 Ответ

1 голос
/ 01 октября 2019

К сожалению, «переименование столбцов и таблиц не может быть выполнено, потому что это требует слишком много работы» - это лучшее решение, чтобы иметь согласованную и управляемую базу кода в долгосрочной перспективе.

В краткосрочной перспективе разумно использовать конфигурацию на основе XML на сервере и придерживаться аннотаций для приложения планшета.

Обновление

Вы хотите посмотреть спецификацию JPA , она определяет механизм сохранения в java. Для него существует несколько поставщиков реализации, здесь - список поставщиков последней версии спецификации.

У меня есть опыт работы только с Hibernate ORM , который наряду с его собственнымAPI также обеспечивает реализацию для JPA. Он имеет опцию конфигурации на основе XML в дополнение к аннотациям. Вы должны будете оценить, какой поставщик соответствует вашему требованию.

Если аннотация ORMlite отличается от JPA, то вы даже можете использовать аннотацию JPA в классах сущностей помимо аннотации ORMLite. Но будьте осторожны, это сделает ваши классы модели сущностей запутанными, и вам понадобится как выбранная вами библиотека реализации JPA, так и библиотека ORMLite на пути к классам сущности.

...