2

作業単位パターン(JPAを使用) を使用すると、リポジトリからエンティティを取得して変更し、作業単位での変更を暗黙的にデータベースに保存します。

ここで、作業単位パターンで検証を実行する方法を知りたいです。ドメイン オブジェクトに (ユーザー入力から) 変更を適用し、その後検証すると、検証が失敗した場合でも、そのオブジェクトの値が変更されます。不正な状態のオブジェクトをデータベースに書き込まないようにする方法は何ですか? 作業単位をロールバックしますか?

OOP の目標の 1 つは、オブジェクトが自身の状態を監視して、不正な値を受け入れないようにすることです。このアプローチでは、例外をスローする必要がありました。これは、上記の Bean 検証 (およびスプリング検証) アプローチとは逆です。しかし、おそらくそれはよりシンプルで優れています。

(ドメイン駆動設計で) どの検証戦略を使用しますか?

4

1 に答える 1

2

不正な状態のオブジェクトをデータベースに書き込まないようにする方法は何ですか? 作業単位をロールバックしますか?

Bean Validation API を使用すると、例外がスローされ、変更が永続化されません (有効にすると、PrePersistPreUpdate、およびPreRemoveライフサイクル イベントの最終段階で検証が行われることになっています)。

JPA 2.0 では、Bean Validation の実装をクラスパスに配置するだけです。

JPA 1.0 では、この前の回答を参照してください。

于 2010-06-08T19:55:35.750 に答える