Смешивание EJB 2.x объектов BMP с Hibernate 3.x - PullRequest
6 голосов
/ 16 сентября 2008

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 13 октября 2008

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

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

2 голосов
/ 16 сентября 2008

Полагаю, с вещами Hibernate нужно быть очень осторожным. Hibernate кэширует вещи, и это может помешать.

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

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

...