ABP 中の Unit of Work はデータベース接続とトランザクションの管理に使用されます。
データベース接続は 遅延して開き、早めに解放 する必要があります。データベース操作を トランザクション で実行することは、最適な方法と考えられています。
ABP での接続とトランザクション管理#
ABP はこれらの方法を組み合わせ、シンプルで効果的なモデルを提供しています。
リポジトリ Repository#
リポジトリはデータベース操作を主に行うクラスです。リポジトリメソッドに入ると、ABP はデータベース接続を開き(すぐに開くとは限りませんが、データベースを最初に使用するときには確実に開きます。ORM プロバイダの実装に依存します)、トランザクションを開始します。したがって、リポジトリメソッド内で安全に接続を使用できます。メソッドが終了すると、トランザクションがコミットされ、接続が解放されます。 リポジトリメソッドが例外をスローした場合、トランザクションは ロールバック され、接続が解放されます。これにより、リポジトリメソッドはアトミックです(1 つのユニット)。
リポジトリメソッドが他のリポジトリメソッドを呼び出した場合(通常、ユニットが他のユニットメソッドを呼び出した場合)、それらは同じ接続とトランザクションを共有します。最初に入ったメソッドが接続とトランザクションを管理し、他のメソッドは同じ接続とトランザクションを使用します。
ユニット Unit#
ユニットはリポジトリとアプリケーションサービスメソッドに暗黙的に有効です。データベース接続とトランザクションを他の場所で制御したい場合は、明示的に使用できます。