2011-02-02 62 views

回答

3

「有狀態」和「無狀態」是會話bean的屬性。

會話bean(簡稱)提供了一種方法來調用應用程序服務器上的方法。這個bean是一個java類的實例。通常,一個bean在遠程方法終止後被銷燬(並返回一個結果)。那些豆子是「無國籍」的。

向bean中添加字段和屬性是可能的(但很不尋常),這樣客戶端就可以在服務器上「創建」這個實例,並將它用於多個操作。那些豆子是「有狀態的」(應該避免)。

7

StatelessStateful是EJB會話Bean的概念,而不是JPA

注意: JPA是EJB規範的一部分,但可以在EJB容器之外單獨使用。這通常會導致混淆。

編輯:一個有用的SO線程,Why Use Stateful Session Beans

+1

+1:簡潔,但正確。應該指出,JPA是EJB規範的一部分,但可以在EJB容器之外單獨使用。這是造成混亂的原因。 – darioo 2011-02-02 09:04:25

+0

謝謝,darioo,你的建議被添加到帖子中。 :) – 2011-02-02 09:06:47

0

有狀態和無狀態是EJB's(Java EE容器管理的會話Beans)的屬性,而不是特定於JPA規範的任何內容。一個Stateful bean對於來自同一客戶端的每個請求將具有與其關聯的狀態。 Stateless bean沒有客戶端特定的狀態,並且可以在多個客戶端請求之間同時使用一個實例(線程安全)。

JPA是一種可用於持久化有狀態bean的持久性策略(我猜你也可以直接使用JDBC,或插入一些其他持久性策略)。

0

我認爲混亂的一部分是Java持久性API是EJB3規範的一部分,有時似乎與EJB可交換使用。直到我第一次拿起Pro EJB 3:Java持久性API,我才真正理解這一點。看看http://en.wikipedia.org/wiki/Enterprise_JavaBean它似乎提供了一個關於這個問題的很好的概述。