我可以直接在JDO环境中执行SQL语句吗?

时间:2010-06-13 12:44:25

标签: sql jdo hsqldb

我在HSqlDb之上使用Datanucleus JDO。

我想执行以下SQL语句来告诉HsqlDb将写入延迟设置为0:
“SET WRITE_DELAY 0”

有没有办法可以从JDO PersistenceManager或PersistenceManagerFactory执行此操作?

旁注:我尝试使用以下连接URL修改write_delay: JDBC:HSQLDB:文件:数据/ HSQLDB / dbbench; WRITE_DELAY =假

它不起作用。我调试了HsqlDb源代码,我仍然可以看到写入延迟设置为10秒。

3 个答案:

答案 0 :(得分:1)

我想我找到了一个对我有用的解决方案:

public PersistenceManager getPersistenceManager() {
    PersistenceManager persistenceManager = 
        _persistenceManagerFactory.getPersistenceManager();
    JDOConnection dataStoreConnection = 
        persistenceManager.getDataStoreConnection();
    Object nativeConnection = dataStoreConnection.getNativeConnection();
    if(! (nativeConnection instanceof Connection) ){
        return persistenceManager;
    }

    Connection connection = (Connection) nativeConnection;
    try {
        Statement statement = connection.createStatement();
        statement.executeUpdate("SET WRITE_DELAY 0");
        statement.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return persistenceManager;
}

答案 1 :(得分:1)

您可以在此示例中编写启动脚本dbbench.script,并将SQL放在那里。

请参阅:http://best-practice-software-engineering.ifs.tuwien.ac.at/technology/tech-hsqldb.html

答案 2 :(得分:0)

我想这个页面 http://www.datanucleus.org/products/accessplatform/jdo/datastore_connection.html 告诉所有需要的。不是吗?