Как отобразить пользовательские структуры данных в объекты bean с помощью JPA / Hibernate? - PullRequest
1 голос
/ 18 января 2020

У нас есть (возможно большая) пользовательская структура данных, реализованная в Java (8+). Он имеет простой и оптимальный API для запроса фрагментов данных. Логическая структура примерно похожа на RDMS (она имеет, например, отношения, столбцы, первичные ключи и внешние ключи), но нет драйвера SQL.

Основная цель - получить доступ к данным через ORM (отображение логических объектов в аннотированных компонентах JPA). Было бы хорошо, если бы мы могли использовать JPQL. Hibernate предпочтительнее, но приветствуются и другие альтернативы.

Какой самый простой способ добиться этого? Каковы ключевые части такой реализации?

(PS Непосредственно реализация SessionImplementor, EntityManagerImplementor et c. Кажется слишком сложной.)

Ответы [ 2 ]

0 голосов
/ 18 января 2020

Одна идея, о которой я только что подумал, которая может сработать, заключается в следующем:

  1. Используйте существующую реализацию базы данных, такую ​​как H2, и используйте с ней интеграцию JPA. H2 уже имеет библиотеки интеграции JPA, поэтому это должно быть легко.

  2. В этой базе данных создайте хранимую процедуру или функцию Java и вызовите ее из текущего приложения через JPA. См. эту документацию H2 о том, как создать Java хранимую процедуру или функцию. (Вы можете также изучить раздел «Использование функции в виде таблицы».)

  3. Определить протокол для методов службы и инкапсулировать его в классе модели. Экземпляр этого модельного класса может быть передан в функцию / SP и получены ответы.

Предостережение : я никогда не делал этого сам, но думаю, что это будет работать .


Редактировать : Вот диаграмма, представляющая мысль. Хотя диаграмма показывает H2 отдельно, скорее всего, она будет в той же JVM, что и «Ваше Java / JEE-приложение». Однако, поскольку нет необходимости использовать H2, я показал его как отдельную сущность.

enter image description here

0 голосов
/ 18 января 2020

У вас есть две возможности.

Реализация JDB C совместимого драйвера для вашей системы, чтобы вы могли использовать реализацию JPA, такую ​​как Hibernate, «напрямую» (хотя вам может потребоваться создать собственный диалект для вашей системы).

Программируйте напрямую в соответствии со спецификацией JPA, как ObjectDB , что полностью исключает необходимость реализации go - SQL и JPA.

последний, вероятно, проще, но вам все равно нужно реализовать полный API JPA. Если это собственная система, предназначенная только для дома, то использовать ее очень мало смысла.

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