Как читать несвязанные данные, используя JPA / EJB3 и WildFly? - PullRequest
1 голос
/ 07 февраля 2020

Я перенес устаревшее корпоративное приложение из EJB2.1 в JPA / EJB3 и JBoss 4.x в WildFly 17.

Во всем приложении соблюдается приведенный ниже шаблон, и я не планировал изменять плохое картина из-за нехватки времени. Уровень изоляции по умолчанию, установленный для базы данных, является подтвержденным для чтения.

Шаблон: запуск транзакции
Сохранение данных
чтение данных с помощью методов поиска - это необходимо для чтения без подтверждения
обновление чего-либо
Подтверждение транзакции

Чтение данных с помощью методов поиска - для чтения грязных данных необходимо, чтобы их считали незафиксированными.
В EJB2.1 это было обработано с помощью bean-компонентов только для чтения, и я удалил их при переносе приложения в JPA.

Этого можно достичь, не изменяя шаблон кода, используемый здесь?

Справка оценили!

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Я бы установил уровень изоляции на уровне источника данных

0 голосов
/ 17 марта 2020

Поскольку я использую JBoss, который использует hibernate для диспетчера сущностей, я разворачиваю bean-компонент из JPA в hibernate-сеанс, затем отсоединяю сущность от hibernate, чтобы сделать ее только для чтения.

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

...