Что такое эквивалент EJB 2 ReadOnlyBean в JPA.EJB3? - PullRequest
0 голосов
/ 06 июля 2019

Я перевожу проект EJB 2.1 в JPA / EJB3. Есть много EJB ReadOnlyBeans, от которых я хочу избавиться.

Разрабатывает ли JPA / EJB3 встроенную поддержку ReadOnlyAccess таким образом, что ReadOnlyBeans не требуется?

EJB 2: У меня установлен уровень изоляции READ_COMITTED с использованием JBOSS в MSSQLSERVER. Когда Txn x пытается прочитать строку, заблокированную txn Y, он будет ждать, пока txn Y не внесет изменения в эту строку. Для сценариев, где нам не нужны последние данные, мы используем ReadOnlyBeans для извлечения данных без какой-либо транзакции.

JPA / EJB3: У меня все еще установлен уровень изоляции READ_COMITTED. Если я удалю ReadOnlyBeans, возникнут ли какие-либо проблемы?

Поскольку менеджеры сущностей TransactionSceoped используют разные экземпляры сущностей, при удалении ROBean не должно быть проблем, верно?

Спасибо!

1 Ответ

0 голосов
/ 07 июля 2019

Если я правильно понимаю, вы спрашиваете, как сделать объект JPA неизменным. Если это так, вы можете либо

  • пометить все свои свойства как insertable = false, updatable = false (используя @Column, @JoinColumn и т. Д.)
  • использовать расширение, специфичное для поставщика (например, @Immutable в Hibernate, @ReadOnly в EclipseLink и т. Д.)

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

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