2

大量の単純なトランザクションpojo構造をメモリにキャッシュするための最良のソリューションを探しています。トランザクションは、外部アプリケーションによって3〜4テーブルのOracleデータベースで発生します。もう1つのアプリケーションは、一種のビジネスインテリジェンスタイプであり、データベース内のトランザクションに基づいて、更新されたpojo(テーブルにマップされた)を評価し、さまざまなビジネスルールを適用します。

Hibernateソリューションは、同じサーバー上のトランザクションに依存しています。ここで、私たちの場合のように、トランザクションは他の場所で発生し、キャッシュされたオブジェクトを照会できるかどうかはわかりません。

質問:

  1. Java側で更新イベントをトリガーするOraclejdbcAPIはありますか?
  2. どのキャッシングソリューションが#1をサポートしますか
  3. キャッシュされたオブジェクトを照会できますか?
4

1 に答える 1

8

OracleデータベースはJavaトリガーをサポートしているため、理論的には、このようなものを自分で実装できます。このガイドを参照してください。理論的には、Javaトリガーは、使用している分散キャッシングソリューションのクライアントライブラリを呼び出して、古いエントリを更新または削除することができます。

Oracleには、 Coherenceと呼ばれる独自のキャッシュソリューションもあります。このような統合が組み込まれている場合もあれば、少なくともチェックする価値がある場合もあります。いくつかの選択肢については、「java分散キャッシュ」を検索してください。

私の知る限り、Hibernateはキャッシュに保存されているオブジェクトに対するクエリをサポートしていません。

ただし、オブジェクトのコレクション全体を個別にキャッシュする場合は、それらのコレクションに対してSQLのようなクエリを実行できるライブラリがいくつかあります。

  • LambdaJ-高度なクエリをサポートしますが、それほど速くはありません
  • CQEngine-非常に高速な一般的なクエリをサポートします

ところで、私はCQEngineの作者です。私はそれらのライブラリの両方が好きです。しかし、私自身のものに対する私のわずかな偏見を許してください:)

于 2012-11-16T00:53:39.523 に答える