使用容器管理實體bean時,bean是否通過容器存儲到數據庫? 這可以使用一些代碼語句在servlet內部進行控制,或者容器在內部自動管理它嗎?使用容器管理實體bean時,bean是否通過容器存儲到數據庫?
回答
基本上,當您的事務提交時,它被存儲到數據庫中。
隨着CMP你可以在deplyment描述與事務劃分控制這個網HRS歐洲
<ejb-jar>
...
<assembly-descriptor>
...
<container-transaction>
<method>
<ejb-name>EmployeeRecord</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>EmployeeRecord</ejb-name>
<method-name>updatePhoneNumber</method-name>
</method>
<trans-attribute>Mandatory</trans-attribute>
</container-transaction>
...
這是規範中的一個片段http://download.oracle.com/otn-pub/jcp/ejb-2.1-fr-spec-oth-JSpec/ejb-2_1-fr-spec.pdf
當你調用EJB新的交易方法可能由容器啓動,具體取決於您的分界線,並且如果方法成功終止,則交易可能會被執行,具體取決於這個和那個。例如,如果您的具體方法是按新要求劃分的,那麼它將被提交,因爲它具有它自己的事務,但是如果它與需求劃分並且在一個正在運行的事務中被調用(例如因爲它被調用從一個會話bean方法中分離出來,比如說,要求或者需要 - 新的),它會在提交封閉事務時被提交。或者如果失敗,不僅在該方法內所做的更改將被回滾,而且還會在封閉的方法調用/事務內進行更改。
儘管部署描述符可能允許嵌套事務,但它實際上歸結爲數據庫引擎最終如何處理事務。很多時候,rdbms並不真正支持嵌套事務,而是使用事務保存點,所以從ejb-perspective看來,遞歸的實際情況可能實際上是以數據庫中的「線性」方式發生的。但是在大多數情況下,結果是一樣的。
考慮事務隔離級別也可能是相關的。
因此,如果服務器在提交事務之前崩潰,那麼實體狀態會丟失? – seahorse 2012-02-18 11:01:42
@seahorse是的,除非它存儲在別處。從規範(再次):如果在容器崩潰時實體的狀態由事務更新,則實體的狀態會自動重置爲上次提交的事務的狀態。 – 2012-02-18 11:48:55
確保bean事務在事務提交時保存到數據庫中。通常情況下,容器會在保存狀態之前等待提交時間,以便在事務回滾的情況下避免不必要的更新,或者在單個事務中多次修改狀態。
該規範還指出,容器必須確保通過在同一事務中執行的EJBQL查詢,對實體bean所做的修改是可見的。這意味着在執行EJBQL查找器之前,修改將保存到數據庫中。
如果查詢在與更改相同的會話/連接內運行,即使尚未提交更新,它們對於該查詢也是可見的。該會話/事務外部可見的內容取決於事務隔離級別。 – 2012-02-18 10:57:05
- 1. Web容器/ EJB容器:JSF託管Bean?
- 2. 實體bean(ejb 3.x)是否需要容器?
- 3. EJB容器管理事務與Bean管理事務的性能
- 4. 實體管理器是否創建到數據庫的連接?
- 5. 要使用什麼,託管的bean(支持bean)或實體bean?
- 6. 寫實體bean內容數據庫事務提交
- 7. 的Spring Bean得到的實體管理器
- 8. 通過會話bean和實體bean進行數據庫連接的區別
- 9. 應用程序vs容器管理實體管理器
- 10. 通過Spring或通過JSF管理bean
- 11. 使用Spring Bean的非Spring bean容器類
- 12. 通過實體Bean創建數據庫表
- 13. Java EE @ TransactionManagement.BEAN - 它如何與容器管理的bean結合?
- 14. 我如何使用EJB實體bean連接到mysql數據庫?
- 15. 使用jersey-spring3從JerseyTest容器中檢索托管bean
- 16. (MockEJB)從容器內測試獲取模擬的實體bean
- 17. 實體框架,抽象類,通用存儲庫和通用管理器
- 18. 通過em.clear()重用實體管理器或創建新的實體管理器?
- 19. bean和jsf驗證註釋inisde託管bean vs實體bean
- 20. 管理bean與支持bean不通過值
- 21. 內存管理+容器
- 22. 使用Laravel容器作爲存儲庫
- 23. 會話bean和實體bean?
- 24. 重用Doctrine實體管理器使用的數據庫連接
- 25. 使用Eclipse數據庫資源管理器顯示blob內容
- 26. 在數據庫中存儲數據時是否需要使用HTML實體?
- 27. 管理數據庫實體管理器給我
- 28. 如何通過容器內的cron轉儲數據庫?
- 29. SaltStack主/管理我的數據庫是在一個容器內
- 30. 理解受管理的bean /支持bean
您是在談論JPA實體還是關於舊的EJB2實體bean? – 2012-02-18 08:12:28
舊的EJB2實體bean – seahorse 2012-02-18 10:07:33