私たちはJBoss 4.2.3でSpring & Hibernateを使用しており、外部システムを呼び出していますが、これは処理要求の一部として時間がかかることがあります。長期的なデータベースロックを解消するために、外部呼び出しが返されるまでデータベースに書き込むことはありません。 しかし、Hibernateはトランザクションがないのが好きではありませんので、私たちが(新しいread-writeサブトランザクションで)書き込みを行うまで、Springによって開始される読み取り専用トランザクションを持っています。残念なことに、これは、外部コール中のリソース、プールから割り当てられた接続を保持していることを意味します。 残りの実行(前後)に1つの実行が必要なときに、進行中のトランザクションなしで外部呼び出しを行う方法はありますか? 実際にトランザクションが必要になるまで、実際のトランザクションを延期し、さらにHibernateを幸せに保つためのより良い方法がありますか?進行中のトランザクションなしで外部コールを行うにはどうすればよいですか?
1
A
答えて
0
外部システムをパーシスタンス層で呼び出す必要がありますか?あなたが永続性を失う前に、この種のことを外部にするのはもっと論理的です。
+0
呼び出し自体は永続化レイヤーからのものではありませんが、外部呼び出しの上にレイヤーを読み込む必要があり、それらのいくつかに遅延読み込みを使用する必要があります(Hibernateがトランザクション/セッションについて不安を感じるときです)。 – Mirvnillith
0
実際には、読み取りのトランザクションは必要ありません。ここで
は、read呼び出しがストレートDAOオブジェクトになりますが、書き込みコールが(SpringのTransactionTemplateヘルパーオブジェクトを使用して)トランザクション内で行われている例である。
public ContainerType getContainerType(Long id) {
return this.containerTypeDao.getContainerType(id);
}
public Long saveContainerType(final ContainerType containerType) {
return (Long) this.transactionTemplate.execute(new TransactionCallback() {
public Long doInTransaction(TransactionStatus status) {
try {
return containerTypeDao.saveContainerType(containerType);
}
catch (Exception e) {
status.setRollbackOnly();
return null;
}
}
});
}
関連する問題
- 1. 進行中のGWT RequestBuilderリクエストを中止するにはどうすればよいですか?
- 2. Excelで部分テキストマッチングを行うにはどうすればよいですか?
- 3. マルチステップフォームで進行状況バーの一連の手順を行うにはどうすればよいですか?
- 4. 進行中のタスクをタイムアウトメカニズムで中断するにはどうすればいいですか?
- 5. ハイパージーガー(ファブリックブロックチェーン)このようなトランザクションを実行するにはどうすればよいですか?
- 6. Android:プログレスバーで進行中の通知を作成するにはどうすればよいですか?
- 7. javascriptで進行中のプロセスを作成するにはどうすればよいですか?
- 8. Snap.svg:進行中のドラッグ操作をプログラムでキャンセルするにはどうすればよいですか?
- 9. ビルダー通知で進行中のフラグを設定するにはどうすればよいですか?
- 10. 実行中にruby system()コールのSTDOUTを取得するにはどうすればよいですか?
- 11. レルムの移行中に、多対1の移行を行うにはどうすればよいですか?
- 12. SQLAlchemyでこの複雑な外部キークエリを実行するにはどうすればよいですか?
- 13. デプロイ中にテストが実行されないようにするにはどうすればよいですか?
- 14. 進行状況バーの進行状況を変更するにはどうすればいいですか?
- 15. 進行中のオーディオタスクを継続するにはどうすればよいですか?
- 16. 進行中のSCNTransactionを終了するにはどうすればよいですか?
- 17. フラグメントに中間進行バーを表示するにはどうすればよいですか?
- 18. uisliderなしでストリームの進行状況を表示するにはどうすればよいですか?
- 19. 10進数のInteger.parseInt()を実行するにはどうすればよいですか?次のように
- 20. 一連の要素の外部キー参照を行うにはどうすればよいですか?
- 21. 外部API(vBulletin)にPOSTリクエストを行うにはどうすればよいですか?
- 22. コマンドラインからJSONペイロードを使用してHTTPリクエスト/コールを行うにはどうすればよいですか?
- 23. 進行中のスキャンが進行中であることを表示するにはどうすればいいですか?
- 24. 外部URLをiOSアプリケーションにハードコーディングしないようにするにはどうすればよいですか?
- 25. エンティティフレームワークが進行中の「保存」トランザクションを持っている間にデバッグを一時停止するにはどうすればよいですか?
- 26. vue.jsでスコープされた外部CSSを実行するにはどうすればよいですか?
- 27. Gitlab.comランナー:外部レポからソフトウェアをインストールして実行するにはどうすればよいですか?
- 28. エクスプレスサーバ内で外部APIコールを作成するにはどうすればよいですか?
- 29. 行をロックして、複数のトランザクションでロックを使用するにはどうすればよいですか?
- 30. 外部コールによってファンクション/コールバックの実行を中断できますか?
は待つために要求を持っています終了するための外部呼び出し?または、外部呼び出しとデータベース書き込みを非同期で実行できますか? – sourcedelica
はい、外部呼び出しが必要かどうか、またその呼び出しの設定(URLなど)については、データベースを確認する必要があります。また、呼び出し元に返す前に、ローカルデータベースに書き込むための応答も必要です。 – Mirvnillith