WebObjects/資料庫相容性和比較/OpenBase
外觀
從 WebObjects 系統寫入多個表的大量資料時,可能會發生死鎖。OpenBase 透過中止其中一個事務並將錯誤返回到 WebObjects 應用程式來解決死鎖問題。
解決此問題的一個可能方法是在開啟事務後立即識別要寫入的表。必要的 SQL 程式碼類似於以下內容。
START TRANSACTION WRITE TABLE foo, bar INSERT INTO foo... INSERT INTO bar... COMMIT
隨 LEWOStuff (http://www.lindesay.co.nz/) 提供了一個名為 JavaOPENBASEJDBCAdaptor 的框架。該框架能夠在每個 EOF 生成的交易開始後放置這些鎖,以防止死鎖發生。您需要將框架構建產品複製到本地庫資料夾。在 MacOS-X 下,這將是...
/Library/Frameworks/JavaOPENBASEJDBCAdaptor.framework
然後,您需要將此框架新增到 X-Code WO 專案中的 Frameworks 組中。在 WebObjects “Application” 子類的建構函式中,插入以下形式的一些程式碼以使該介面卡與您的模型一起使用。
EOModel model = EOModelGroup.defaultGroup().modelNamed("MyModel");
if(null!=model)
model.setAdaptorName("OPENBASEJDBC");
此程式碼將找到介面卡的框架,載入介面卡以及在模型中設定介面卡。如果您使用 EOF 的 SQL 日誌記錄,則 WRITE TABLE ... 子句也將寫入日誌中。
如果您要使用此框架,則無需在專案中包含 LEWOStuff 框架。