2

私は Java 1.6、Tomcat、およびサーブレットを JDBC および永続化フレームワークと共に使用しています。私は DB レベルのトランザクションを知っています (そして使用しています) が、アプリケーション レベルのロールバックとコミットのためのフレームワークがあるかどうか疑問に思っていましたか?

これには特定の名前があると確信していますが、現在実装しているよりも標準的な方法で以下をコーディングしてテストできるものがあります。

- get user info
- charge credit card
- create mailing labels
- write db
if any fail, then rollback and:
   - cancel credit card charge
   - invalidate mailing label
   - rollback DB
else
  - commit. (i.e. do it all with threads)

これは意味がありますか?

これまでのところ、私はすべてのロジックとエラー チェックを処理しています...これがますます複雑になっているため、役立つ優れたフレームワークがあるかどうか疑問に思っています。

4

3 に答える 3

2

あなたは基本的にソフトウェアトランザクションメモリを考えているようです。ウィキペディアの要約よりもはるかにうまくいくつもりはありません。

コンピュータ サイエンスでは、ソフトウェア トランザクショナル メモリ (STM) は、同時実行コンピューティングで共有メモリへのアクセスを制御するためのデータベース トランザクションに類似した同時実行制御メカニズムです。これは、ロックベースの同期に代わるものです。このコンテキストでのトランザクションは、一連の読み取りと共有メモリへの書き込みを実行するコードの一部です。これらの読み取りと書き込みは、論理的に単一の瞬間に発生します。中間状態は、他の (成功した) トランザクションには見えません。

これは非常に興味深いアイデアですが、まだ「大々的に」普及しているとは思いません。ほとんどが研究に限定されていると思います。とは言っても、ちょっと調べてみると、Multiverse が見つかりました。これは一見中途半端に興味深い実装で、これまで聞いたことはありませんが、チュートリアルと Web サイトがあります...

于 2012-07-11T02:56:42.037 に答える
0

私には、カスタマイズ可能な IEnlistmentNotification の実装を備えたSystem.Transactions.TransactionScopeのポートが必要だということです。おそらく、 JDO Transactionsはすでにこのようなことを行っていますが、一見しただけではわかりません。表面的には、CC 認証サービスなどの他のものをサポートするほど柔軟ではないように見えます。

于 2012-08-20T21:42:33.207 に答える