Apache Jena SDB交易支持

时间:2017-08-18 14:03:21

标签: java sql apache transactions jena

我正在使用Apache Jena Api而不是SQL数据库(micrtosoft sql server)已知AS JENA SDB 当我想以trensactional方式访问数据库时,我有问题。 当我使用Jena TDB时,支持交易,但是当我以线性方式使用JENA TDB时 java.lang.UnsupportedOperationException:不支持事务 我抛出异常。

来自Jena TDB的片段如下:

Dataset dataset =  return TDBFactory.createDataset("datasetLocation");
dataset.begin(ReadWrite.WRITE);
//...
来自Jena SDB的片段不起作用如下:

   StoreDesc storeDesc = new StoreDesc(LayoutType.LayoutTripleNodesHash, 
   DatabaseType.SQLServer);
   SDBConnection sdbConn = new SDBConnection(getConnection());
   Store store = StoreFactory.create(storeDesc, sdbConn);
   Dataset dataset =DatasetStore.create(store);
   dataset.begin(ReadWrite.WRITE);
   //...this throws the exception

我的问题是,因为我的要求是从TDB迁移到SDB(我知道不推荐) 有没有办法以事务方式使用Jena SDB

1 个答案:

答案 0 :(得分:0)

它始终是事务性的 - 默认情况下,它是autocommit,可能非常昂贵。

您可以直接操作JDBC连接设置,或使用任何模型TransactionHandler,因为同一数据集的所有模型都映射到相同的代码以作用于JDBC连接,这也可用作:

Store.getConnection().getTransactionHandler()