web-dev-qa-db-ja.com

ビジネスクラスとドメインクラスの違いは何ですか?永続クラスとはどういう意味ですか?

ビジネスクラスとドメインクラスの違いは何ですか?永続クラスとはどういう意味ですか?

24
sevugarajan

ドメインクラスは、Martin Fowlerが次のように説明している ドメインモデル のクラスです エンタープライズアプリケーションのパターン)アーキテクチャ

動作とデータの両方を組み込んだドメインのオブジェクトモデル。

alt text

最悪の場合、ビジネスロジックは非常に複雑になる可能性があります。ルールとロジックは、さまざまなケースと動作の傾斜を記述します。オブジェクトが機能するように設計されたのは、この複雑さです。ドメインモデルは、相互接続されたオブジェクトのWebを作成します。各オブジェクトは、企業のように大きいか、注文フォームの1行のように小さいかにかかわらず、意味のある個人を表します。

そして私にとって、ビジネスクラスとの違いはありません:ビジネスオブジェクトは、ドメインオブジェクト(ドメイン)よりも多かれ少なかれビジネスロジックを実行しませんドメインオブジェクトの外部にビジネスロジックが実装されているモデルは、 Anemic Domain Model と呼ばれ、これは重要な用語です)、ドメインオブジェクトおよび ビジネスオブジェクトare同じことです。

最後に、永続クラスは、永続化できるクラスです。これは、情報のメモリ内表現を、それを超えて永続化する物理ストレージに転送することを意味します。 JVMのライブ。多くの場合、永続性はデータベースを使用して実装されます(ただし、これが唯一の解決策ではありません。たとえば、 オブジェクトの普及率 を参照してください)。一般的な永続化操作には、CRUD操作と呼ばれる作成、読み取り、更新、削除が含まれます。ドメインオブジェクトは非常に頻繁に永続化されます。つまり、選択した永続化エンジンの基本的な詳細を非表示にするAPIを介してドメインオブジェクトに対してCRUD操作を実行できます。

33
Pascal Thivent

「ドメイン」クラスは、データをモデル化するクラスです。これは通常、データストア(データベースなど)からメモリ内オブジェクトにデータをマッピングするために使用されます。ビジネスクラスは、アプリケーションが機能するクラスです。ドメインクラスと同じにすることができ、通常、ある種のビジネスロジックまたは処理を実行します。

永続性とは、オブジェクトの状態をデータストア(xml、テキストファイル、より一般的にはデータベースなど)に保存する機能を指します。したがって、この種のオブジェクトの状態は、アプリケーションが実行されているかどうかに関係なく「永続」します。

オブジェクト/リレーショナルマッピングに興味があるように思えます。始めるには このウィキペディアの記事 を読むことをお勧めします。

21
Kevin Babcock

BusinessおよびDomainという用語は、しばしば同義語として使用されます。個人的には、ドメインモデルドメインオブジェクトなどの用語が好きです。彼らはビジネス(それが何であれ)を扱うように制約されていないので。

例として、 Safewhere では、主にクレームベースのIDと承認を使用します。私たちがモデル化する概念は、従来の「ビジネス」とほとんど共通点がないため、そのような場合は、ドメインモデルがより適切な用語だと思います。

4
Mark Seemann

ビジネスクラスは、ドメイン固有のロジックを提供します。

ドメインクラスは、ドメインの一部を表すエンティティです。

永続クラス、より適切には永続インスタンスは、サーバーの再起動後に同じデータを持ちます(データは通常、ある種のデータベースに保存されます)。

例として銀行取引を取り上げましょう。永続的なドメインクラスAccountがあります。私のAccount(インスタンス)には、値1000のフィールドBalanceがあります。

借方を処理するトランザクションビジネスロジックは、AccountDebitのようなもので、メソッドとしてdebitAccount(Account account, int amount)を持ち、ビジネスロジックとして

int balance = account.getBalance();
if (balance < amount) {
   throw exception("You're too poor");
}
balance = balance - amount;
account.setBalance(balance);
account.commit(); // save the values to persistent store

そして、私はお金が通常intではないこと、そして借方に記入された金額が通常他の誰かに貸方記入されることを知っています:)

4
extraneon