Смешивание компонентов объекта EJB 2.x BMP с Hibernate 3.x

StackOverflow https://stackoverflow.com/questions/68614

Вопрос

У меня есть большое приложение, которое использует EJB 2.x entity beans (BMP).Хорошо известно, что это ужасная стратегия сохранения (при необходимости я могу подробнее рассказать).

Я хотел бы начать миграцию этого приложения, чтобы использовать гораздо более выразительную, прозрачную и неинвазивную стратегию сохранения, и, учитывая предыдущий опыт моей компании с этим, Hibernate 3.x - очевидный выбор.

Переход в режим гибернации займет некоторое время, так как более 100 таблиц в приложении используют компоненты entity beans.Итак, я рассматриваю поэтапный подход, при котором две стратегии сохранения выполняются параллельно, в идеале на одних и тех же таблицах в одно и то же время, если это возможно.

Мой вопрос в том, каковы подводные камни (если таковые имеются) объединения этих двух стратегий сохранения?Будут ли они мешать друг другу?

Это было полезно?

Решение

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

Для транзакций они оба должны использовать JTA, предоставляемый контейнером, поэтому для этого он должен быть безопасным.

Другие советы

Я думаю, что с чем действительно нужно быть осторожным, так это с сессиями гибернации.Спящий режим кэширует данные, и это может помешать.

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

Или в качестве альтернативы используйте EJB 3, который стандартизирован для гибернации в Java Persistence API.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top