JPA транзакции и триггеры / запланированные задания возможные конфликты

В нашем приложении мы используем PL/SQL для поддержания постоянства данных, мы также активно используем хранимые процедуры PL/SQL, запланированные задания и триггеры для реализации частей логики приложения.

Мой вопрос:

Использование JPA для доступа к этому постоянству, я должен беспокоиться о конфликтах
что транзакции JPA могут потенциально иметь с вышеупомянутыми триггерами и запланированными заданиями, определенными в БД?

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

1 ответ

У вас могут быть проблемы. Реализация бизнес-логики в БД потенциально может привести к дублированию кода. Но самая большая проблема связана с целостностью и согласованностью данных:

  1. Ваше приложение использует оптимистическую блокировку. Если да, то возможно, что JPA не сможет увидеть изменения в версиях уважаемых объектов. И не будет выдавать исключение оптимистической блокировки, если изменение происходит из-за кода PLSQl. Если в нем не реализовано управление версиями.
  2. Кэширование. Если вы используете кеширование, вы можете оказаться в ситуации, когда ваш кеш не соответствует состоянию базы данных. Например, вы читаете сущность A, состояние кэшируется, затем фоновая процедура PLSQL обновляет свое состояние. Затем вы делаете еще одно обновление и сохраняете данные Ta... у вас есть проблемы. И затем снова мы переходим к первому вопросу о том, как данные версионируются.

В общем, смешивать PL/SQL и Hibernate мне очень не нравится...

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