По-видимому, существует два шаблона для реализации бизнес-транзакций, которые охватывают несколько HTTP-запросов с помощью JPA:
- объект-менеджер-на-запрос с отсоединенными объектами
- расширенный контекст постоянства
Каковы соответствующие преимущества этих моделей?Когда следует отдать предпочтение?
До сих пор я придумал:
- расширенный контекст постоянства гарантирует, что идентичность объекта эквивалентна идентичности базы данных, упрощая модель программирования и потенциально рассеиваянеобходимость реализации равных для сущностей
- для отдельных сущностей требуется меньше памяти, чем для расширенного контекста постоянства, поскольку контекст постоянства также должен хранить предыдущее состояние объекта для обнаружения изменений
- , на которые больше не ссылаютсяотдельные объекты получают право на сборку мусора;постоянные объекты должны сначала быть явно отключены
Однако, не имея практического опыта работы с JPA, я уверен, что упустил что-то важное, отсюда и этот вопрос.
В случае, если это имеет значение:Мы намереваемся использовать JPA 2.0, поддерживаемый Hibernate 3.6.
Edit : наша технология представления - JSF 2.0, в контейнере EJB 3.1, с CDI и, возможно, Seam 3.