3

Hibernate を使用して MySQL テーブルに low_priority または遅延挿入を行うにはどうすればよいですか?

ロギング ルーチンで、ログ情報をデータベースのテーブルに挿入して、さらに分析したいと考えています。しかし、挿入にかかる時間は気にしないので、通常は INSERT LOW_PRIORITY INTO LogEntry (level, title, full) VALUES ('Info', 'Title here', 'Full log') と言います。 ; エンティティ LogEntry がある場合、LogEntryDAO を作成または接続して、LOW_PRIORITY または DELAYED の挿入と更新を行うにはどうすればよいですか?

乾杯

ニック

4

3 に答える 3

3

もっと簡単な解決策があります。

エンティティ クラスに注釈を付ける@SQLInsert(sql="INSERT LOW_PRIORITY INTO LogEntry (level, title, full) VALUES (?, ?,?)")

素敵でエレガント:-)

于 2009-11-16T13:16:30.207 に答える
2

を使用しorg.hibernate.Interceptorます。変更するために実行する SQL のコピーを取得します。

詳細については、ドキュメントを参照してください

于 2009-10-19T09:43:14.477 に答える
1

より良い解決策は、Log4J アペンダーでそのメッセージをキューに書き込み、MessageListener でそれを取得してデータベースに INSERT することです。

あなたのアプリはデータベースから切り離されているので、どれだけ時間がかかるか気にする必要はありません。データベースがダウンした場合、永続キューは、復旧できるまでメッセージを蓄積できます。

XA JDBC ドライバーとトランザクション マネージャーを必ず使用して、キューとデータベースが 1 つのトランザクションになるようにしてください。

于 2009-10-19T09:43:07.787 に答える