[英]Java Persistance Application Stateless vs. Stateful
我是 JPA 新手,無法理解無狀態和有狀態之間的用途和區別。
有什么經驗嗎?
問候,海瑟姆
Stateless和Stateful是 EJB Session Bean 的概念,而不是JPA 的概念。
注意: JPA 是 EJB 規范的一部分,但可以單獨使用,也可以在 EJB 容器之外使用。 這通常是造成混淆的原因。
編輯:一個有用的 SO 線程, Why Use Stateful Session Beans 。
“有狀態”和“無狀態”是會話 bean 的屬性。
會話 bean(簡而言之)提供了一種在應用程序服務器上調用方法的方法。 bean是java類的一個實例。 通常,在遠程方法終止(並返回結果)后銷毀 bean。 那些 bean 是“無狀態的”。
可以(但很不尋常)向 bean 添加字段和屬性,以便客戶端可以在服務器上“創建”此實例並將其用於多個操作。 這些 bean 是“有狀態的”(應該避免)。
我認為部分混淆是 Java Persistence API 是 EJB3 規范的一部分,有時似乎可以與 EJB 互換使用。 直到我第一次拿起Pro EJB 3: Java Persistence API之前,我才真正理解這一點。 看看http://en.wikipedia.org/wiki/Enterprise_JavaBean它似乎提供了關於這個主題的很好的概述。
基本上,如您所知,Java 會編譯內容,然后您會在運行時看到應用程序,如果在類加載器之后一切順利並避免執行階段錯誤等等,當您將變量、對象等存儲在 RAM 等任何地方時或當用戶與您的應用程序交互時,數據庫和這些數據可能會發生變化,然后您開發了一個有狀態的應用程序,如果您認為您的代碼邏輯中沒有任何動態(可以重塑應用程序行為的東西),那么您將要開發一個無狀態應用程序。
簡而言之,有狀態應用程序意味着在運行時動態更改類屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.