2011-08-30 24 views
1

使用的軟件:休眠+使SQLite的編譯指示來獲得速度上的Windows 7計算機

  • 冬眠3.6
  • sqlite的JBDC 3.6.0
  • 的Java JRE 1.6.x版

我有通過tcp連接傳輸數據的問題(20 000代碼)

  • 創建的幫助下SQLite數據庫休眠
  • 使用hibernateview和休眠註釋創建querys
  • 休眠proberties也用
  • 存儲20 000項與Hibernate和NO源碼編譯指示啓用持續近6分鐘(〜330秒)在Windows 7上
  • 存儲20 000條目沒有休眠和所有相關的SQL編譯指示啓用持續約2分鐘(〜109秒)在Windows 7上
  • 測試與Windows XP和Windows Vista上沒有編譯指示的休眠和sqlite ,但在win7上它幾乎可以持續3次(約330秒 - 贏7次)只要在XP機器上
  • 在Windows 7中,我們要激活源碼編譯指示來獲得速度提升
  • 相關編譯指示是:

    PRAGMA cache_size = 400000; 
    PRAGMA synchronous = OFF; 
    PRAGMA count_changes = OFF; 
    PRAGMA temp_store = MEMORY; 
    PRAGMA auto_vacuum = NONE; 
    

問題:我們必須使用休眠(沒有Nhibernate! )

問題:

  • 如何啓用如果可能的休眠sqlite的連接這些編譯?
  • 使用hibernate可以這樣做嗎?

回答

0

插入一個接一個會很慢;你可能想考慮配料。請參閱我的回答this other post

1

我還在尋找一些方法來設置另一個編譯指示:PRAGMA foreign_keys = ON用於休眠連接。我沒有找到有關該主題的任何內容,我想出的唯一解決方案是整理SQLite JDBC驅動程序,並在每次檢索到新連接時設置必需的編譯指示。請參見下面的示例代碼:

@Override 
public Connection connect(String url, Properties info) throws SQLException { 
    final Connection connection = originalDriver.connect(url, info); 
    initPragmas(connection); 
    return connection; 
} 

private void initPragmas(Connection connection) throws SQLException { 
    //Enabling foreign keys 
    connection.prepareStatement("PRAGMA foreign_keys = ON;").execute(); 
} 

全樣本是在這裏:https://gist.github.com/52dbc7066787684de634。然後當初始化hibernate.connection.driver_class屬性只需將其設置爲您的包。驅動程序