2012-07-06 96 views
4

有狀態會話bean通常通過實現購物車來說明。從Java EE以外的角度來看,我傾向於用持久化模型實體來處理這種狀態:具有產品和數量的ShoppingCart對象。這樣,我的狀態就由數據庫和所有其他狀態一起維護,而不是由應用程序服務器維護。有狀會話Bean與持久實體

有狀態會話bean設計比「普通」持久性有什麼技術優勢?在基於Java EE的Web應用程序中購物車是否確實通常是用SFSB編寫的,或者像其他系統一樣,只是通過更精細的領域建模?

回答

1

有幾種實現購物車的方法。 SFSB和數據庫持久性的主要區別在於持久性:)

有狀態會話bean只會在會話期間「持續」數據。因此,如果用戶會話變爲非活動狀態(例如30分鐘不活動後例如),購物車將被重置

由於數據庫持久性,購物車將被永久存儲,所以如果用戶有充足的購物車,那麼不要在6個月內訪問網上商店,並再次訪問,購物車仍然會被填充

我認爲通常使用第一種解決方案,因爲涉及非內存數據庫不是一個好主意易失數據。對於那些不需要長期持久性的數據,會有很多硬盤驅動器I/O開銷

+0

我不認爲磁盤I/O的數量很容易測量。畢竟,只要服務器需要,SFSB就可以被鈍化,這也意味着磁盤I/O。 – 2012-07-08 04:33:03

+0

好點!我忘了那個。但我認爲這取決於會話時間,會話數量,SFSB緩存大小等。如果我們考慮長時間的會話和許多用戶,可能會有很多鈍化bean。但我認爲這種情況是一個問題,最好是減少會話時間或更改緩存大小,因爲太多的鈍化絕不是一個好消息。 對於一個數據庫,無論用戶做什麼,總是擁有I/O。每個「添加到購物車」,「從購物車中刪除」,「更改數量」等都會導致I/O。我希望會有更多的「添加到購物車」,然後在你的情況下,豆腐鈍化:) – cporte 2012-07-08 08:55:39

+0

另一方面,像亞馬遜這樣的網站可以讓你的購物車保持某種長期存儲狀態。我不知道。我不覺得我有一種中短期緩存的感覺,其使用壽命與HTTP會話不同。 – 2012-07-08 19:17:30