2008-09-16 2 views
6

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

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

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

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

ответ

2

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

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

+0

То же самое относится к кешу первого уровня (сеанс) – 2008-10-16 03:47:15

2

Я думаю, что на самом деле нужно быть осторожным с работой с сеансами Hibernate. Hibernate кэширует материал, и это может мешать.

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

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

+0

На самом деле мы будем программировать против JPA с Hibernate как провайдером, но поскольку мы не можем мгновенно перенести 100 объектов BMP, вопрос о параллельной работе обеих технологий остается. – 2011-03-20 22:16:12