2016-09-20 10 views
2

データベースからのデータフェッチを管理するために接続プーリングを使用するアプリケーションを実行しています。接続プールのために、私はHikariCPを使用しています。接続プールを使用中にデータソースを更新する

最初のアプリケーションが実行されている間に、データベースを更新する別のアプリケーションがあります。 接続プーリング用に作成されたデータソースも自動的に更新されますか?そうでない場合は、どうすればいいですか?データベースを更新するたびに新しい接続プールを作成する必要がありますか?

例: データベースには、ある学年の学生の記録があります。 接続プールのデータソースが作成されました。 学生の学年が変更されました。 データソースを更新するにはどうすればよいですか?

ご協力いただければ幸いです。ありがとうございました。

+0

データベースが変更されたときに接続*プール*を更新する必要があるのはなぜですか? – EJP

+1

「不明確」と批判した人には、OPが何を求めているかは不明ではない。データソースが実際にどのようなもので、データベースへの接続(特にプーリングコンテキストでの)が実際に機能するかを理解するのに役立つことは明らかです。ユーザーが非常に基本的なことについて質問したとしても、それは無効な質問ではありません。 – megaflop

+0

ありがとう@daiscog。 –

答えて

2

希望thisはあなたの混乱を解消します。

ほとんどのアプリケーションでは、唯一、彼らが積極的に は、多くの場合、完了するまでにのみミリ秒かかるトランザクションを処理する際にJDBC 接続へのアクセス権を持っているスレッドを必要としています。 トランザクションを処理していない場合、接続はアイドル状態になります。接続プーリングにより、 アイドル接続を他のスレッドで使用して有効な作業を行うことができます。

実際には、JDBCがMySQLなどのデータベースに対して作業する必要がある場合、スレッドはプールから接続を要求します。接続を使用して スレッドが終了すると、そのスレッドはプールに戻ります。 これは他のスレッドで使用できることを示します。

接続プーリングを使用するかどうかに関係なく、他のアプリケーションによるデータベースの更新は正常に行われ、データベースにクエリを実行するたびに新しいデータが表示されます。あなたはこの図は、あなたが実際に何が起こっているか理解するのに役立つかもしれない

+0

ありがとうございます。非常に役立ちます。 –

+0

助けてくれてうれしい – e4c5

1

「接続プールを更新する」にする必要がありません。

Diagram of database server architecture

何Javaは、「データソース」と言及することは抽象的ですデータ自体ではなく、データの位置を表す概念。データソースへの複数の接続を作成できますが、データベースサーバーによって制御される、そのデータの1つのコピーのみが存在します。

1つのアプリケーションからデータを更新する場合、データストアに保持されているデータを変更するためにデータベースサーバーへの接続を介してメッセージを送信しています。コミットされた変更は、すべてが同じデータベース(つまり、同じ物理データストア)を使用しているため、他のアプリケーションにただちに表示されます。

+0

もう少し明るい+1 – e4c5

関連する問題