跳到内容

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 框架。

华夏公益教科书