跳到內容

WebObjects/資料庫相容性和比較/OpenBase

來自華夏公益教科書,開放的書籍,開放的世界

http://www.codefab.com/wordpress/index.php/2006/02/11/webobjectseof-patch-better-way-to-limit-fetches-with-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 框架。

華夏公益教科書