質問

速度を犠牲にすることなく、hsqldbに接続プーリングを実装する最良の方法は何ですか?

役に立ちましたか?

解決

HibernateはDataSourceから接続を取得し、それらを使用して閉じます。接続プールが必要です。接続プールは非常に非効率的で、使用するデータベースサーバーに関係なく、アプリとDBMSの両方で多くのリソースを消費します。

Apache-Jakartaからcommons-dbcpを試してみてください。設定は非常に効率的で本当に簡単です。 commons-poolに依存します。 BasicDataSourceをDBCPで定義するだけで、使用するよう指示したJDBCドライバーからの接続を管理します。接続の検証と他の多くのものがあります。 また、Webアプリを作成している場合は、独自のプールを定義する代わりに、使用するコンテナに接続プールを構成して使用します。

他のヒント

リンゴとオレンジを比較しています:

  1. ormが必要な場合は、同じdbに対して異なるormツールのパフォーマンスを比較します。
  2. 接続プーリングが必要な場合は、同じデータベースに対して異なる接続プーリングライブラリを比較します。

ORMの実行には余分な労力がかかるため、直接JDBCアクセスほど高速ではありません。ただし、この追加のオーバーヘッドを最小限に抑えるために、休止状態は非常に長く(そして非常に成功して)います。 ORMを使用すると、開発の生産性が大幅に向上し、パフォーマンスが比較的わずかに低下します。

接続プーリングは、ormに直交する問題です。最も明らかに、休止状態では、独自の接続プールインフラストラクチャを選択できます。

また、実際には、接続プーリングとトランザクション管理の間にかなり密接な結合があることが多いことに注意してください。たとえば、典型的なJ2EEアプリケーションは、接続プールをコンテナに(JDBC Datasource APIを介して)残し、宣言トランザクションに依存します。この場合、接続とトランザクションは(ほぼ)一緒に管理されます。

J2EEコンテナを使用しておらず、ormを必要としない場合、C3P0、commons-poolなどを単純に比較します。

Hibernate独自の接続プーラーを使用した場合、 c3p0 の使用を検討できますか? (すでにc3p0を使用している場合は、これ以上手伝うことはできません)私はHSQLDBを自分で使用したことはありませんが、試してみる価値があると思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top