2010-12-08 55 views

回答

16

無論如何,關於無狀態會話沒有太多可說的。基本上,它只有一個目的:不要緩存任何東西。

在常規會話中,Hibernate會維護一個「會話級別緩存」,例如當您關閉會話時會被清除。在其他一些情況下,您可以插入緩存機制以充當「二級緩存」,該緩存機制與此「會話級緩存」互補,即使在會話關閉後也可以存活。

但是,如果您處於批處理操作模式,則可能會出現問題。例如,如果您只是讀取輸入文件並在數據庫中插入實體,則將任何實體保留在緩存中(會話級別)是沒有意義的。你知道你不會再需要這個實體了。所以,這就是你使用無狀態會話的地方。

API沒有任何變化,只是實施中的變化。

看看這個鏈接。這就是無狀態會話需要了解的全部內容: http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/batch.html#batch-statelesssession