2011-06-26 15 views
0

私はh2データベースを組み込みモードで使用しています。また、hibernateを使用してアクセスしています。速さ(低速組み込みデータベース処理(休止状態)

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 

    <property name="dataSource"> 
     <ref bean="dataSource" /> 
    </property> 

    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop> 
      <prop key="hibernate.show_sql">false</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
     </props> 
    </property> 

    <property name="annotatedClasses"> 
     <list> 
      <value>classname1</value> 
      <value>classname2</value> 
      <value>classname3</value> 
     </list> 
    </property> 
</bean> 

私は挿入データのデータベースは非常に、非常に遅い動作します試してみて、私は非常に巨大なIOストリームを持っている:それは私が休止状態を初期化するために使用しています私の春のconfigですハードドライブが可能です)。

getHibernateTemplate().save(question);
が呼び出されるたびに、データベースが開いたり閉じたりすると思います。興味深いのは、接続文字列をスタンドアロンサーバーを使用するように変更すると、この問題は消え、すべてうまく動作します。

組み込みデータベースの設定に何が問題がありますか?

UPD

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.h2.jdbcx.JdbcDataSource" /> 
    <property name="url" value="jdbc:h2:file:C:\temp\data.db" /> 
    <property name="username" value="sa" /> 
    <property name="password" value="" /> 
</bean> 
+0

あなたの 'dataSource'はどのように見えますか?接続プールを使用していますか、構成パラメータは何ですか? –

+0

@ benjamin-muschkoデータソースの設定を追加しました –

+1

データベースのURLに '; DB_CLOSE_DELAY = 1'を追加しましたか?私はSpringもよく分かりませんが、 'DriverManagerDataSource'の場合は、' org.h2.Driver'を使うのはなぜですか? –

答えて

2

実装org.springframework.jdbc.datasource.DriverManagerDataSourceは、あなたが1を要求する場合、必ず、接続を開閉します。

のJavaDocから:

注:このクラスは、実際の 接続プールではありません。それは実際には プール接続ではありません。 標準プールの 標準プールを交換するだけで、すべての呼び出しで同じ の接続が作成されますが、新しい接続が作成されます( )。

生産環境では、限られた数の接続を開いて使用するための接続プールを使用することを強くお勧めします。 dataSourceの場合は、Apache's Jakarta Commons DBCPまたはC3P0としてください。 This exampleは、dataSourceがDBCPを使用するように設定する方法を示しています。接続プールを使用すると、データベースのクエリに費やす時間が大幅に短縮され、問題を最も確実に解決できます。