Приложение Java Persistance без сохранения состояния с сохранением состояния - PullRequest
3 голосов
/ 02 февраля 2011

Я новичок в JPA, и я не могу понять использование и разницу между не имеющим состояния и сохраняющим состояние.

Есть ли опыт?

С уважением, Haythem

Ответы [ 4 ]

8 голосов
/ 02 февраля 2011

Без сохранения состояния и С сохранением состояния - это концепция EJB Session Bean, а не JPA .

Примечание: JPA является частью спецификации EJB, но может использоваться отдельно и вне контейнера EJB. Это то, что обычно вызывает путаницу.

Отредактировано: Полезный поток SO, Зачем использовать Stateful Session Bean .

3 голосов
/ 02 февраля 2011

«Stateful» и «Stateless» являются атрибутами для сессионных компонентов.

Сессионный компонент (вкратце) предоставляет способ вызова методов на сервере приложений.Бин является экземпляром Java-класса.Обычно бин уничтожается после завершения удаленного метода (и возвращает результат).Эти компоненты не сохраняют состояния.

Можно (но довольно необычно) добавить поля и атрибуты в компонент, чтобы клиент мог «создать» этот экземпляр на сервере и использовать его для более чем одной операции.,Эти бобы "с состоянием" (и их следует избегать).

0 голосов
/ 02 февраля 2011

Я думаю, что отчасти путаница заключается в том, что Java Persistence API является частью спецификации EJB3 и иногда, кажется, используется взаимозаменяемо с EJB.Я действительно не понимал этого, пока впервые не взял Pro EJB 3: Java Persistence API .Взгляните на http://en.wikipedia.org/wiki/Enterprise_JavaBean, который, кажется, дает хороший обзор по этому вопросу.

0 голосов
/ 02 февраля 2011

Stateful и Stateless - это свойства EJB (сессионные компоненты, управляемые контейнером Java EE), а не что-либо специфическое для спецификации JPA.Боб Stateful будет иметь состояние, связанное с ним для каждого запроса от одного и того же клиента. Бессостоящие бины не имеют определенного состояния клиента, и один запрос может использоваться одновременно, потокобезопасным, между запросами нескольких клиентов.

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

...