VOとDTO差内のJavaオブジェクト

違いと有用性のVO、DTO、DO、POコンセプトに

住所:https://www.cnblogs.com/zxf330301/p/6534643.html

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------

オリジナル住所:https://ask.csdn.net/questions/692933?sort=id

JAVA言語で書かれたJavaBeanは、再利用可能なコンポーネントです。JavaBeanの中に書かれており、特定のクラスは、パブリックでなければならない、と引数なしのコンストラクタを持ちます。デザインパターンの整合性に沿った一般的な方法を提供することによって、JavaBeanは、内部ドメインメンバプロパティを公開します。我々はすべて知っているように、このモデルに沿った属性名は、他のJavaクラスを発見し、独自のメカニズムを通じてこれらのJavaBeanのプロパティの動作をすることができます。

すなわち、目標値オブジェクトVOの値は、
主にオブジェクトビューに反映され、WEBページは、パッケージオブジェクトにページ全体の属性。次いで、交換制御層と層VOビュー・オブジェクトを送信しました。

DTO(治療が増加またはPOの特性を低下させることができる後PO経過):
データ転送オブジェクトデータ転送オブジェクトが
主に使用される遠隔呼転送オブジェクトなどの多数。
たとえば、私たちはテーブル内の100個のフィールドを持って、対応するPOは100個の特性を持っています。
しかし、我々は唯一のインターフェース10でフィールドを表示、
データを取得するWebサービスとクライアントは、それが全体のクライアントがオブジェクトPO渡す必要はありません、
我々は唯一の属性DTOとクライアント10に結果を渡すことができ、これは、サーバーのテーブル構造を公開していません。到着時にクライアントを、この時点でそれはVOのアイデンティティになっていますことを、対応する画面表示、このオブジェクト場合。

POJO(POJOは、環境の変化にコンセプトやインターフェース、ステータスと役割の変更です):
POJO私有財産の対象として、パラメータの数があります。次に、各パラメータにアクセスするためのインタフェースとしてgetおよびsetメソッドを定義する
平原通常のJavaオブジェクトの単純なJavaオブジェクト
の共通POJOは単純なJavaオブジェクトである、それはJavaBeanの、EntityBeanのなどなど、ビジネス・ロジックまたは永続ロジックを、含まれていますが、いないいないですこれは、任意の特別な役割を持っていないし、継承するか、他のJavaクラスまたはインタフェースフレームワークを実装していません。
POJOオブジェクトは、時には広く実際にオブジェクトのパフォーマンスで使用されるデータオブジェクトと呼びます。
POJO永続化後POです。
それは直接によって送信される、DTO転送処理がされている
対応する層を表すために直接使用VOであります


VOとDTOの違い
プレゼンテーション層とサービス層の間でデータを渡すためにDTOオブジェクト以来、なぜあなたはVO、それが必要なのでしょうか?オン!シナリオのほとんどのために、DTOとVOのプロパティ値は、基本的には同じではない、と彼らは通常POJOなので、わざわざする必要が、これは思考のレベル、設計レベルの概念を達成していることを忘れないでくださいまたは両方が本質的に異なるため、DTOは、サービス層がデータを受信し、データを返すために必要であり、データのプレゼンテーション層は、VOを表示する表し、VO及びDTOに存在するべきです。

理解しやすいかもしれない説明するために例を使用します。

サービス層は、例えば、のgetUserシステムの方法は、ジェンダー(性別)、サービス層のために、それだけで意味論的に定義されているプロパティをユーザに返す:1-雄、2雌、0不特定し、及びプレゼンテーション層のために、それが未指定のための「秘密」で、女性のための「美しさ」と、男性のための「男性」を使用する必要があるかもしれません。ここで、あなたはまた、サービス層では、直接戻っ「ギャルズ」を主張するかもしれない、まだラインではないのですか?ほとんどのアプリケーションでは、これは問題ではありませんが、需要は、顧客がスタイルをカスタマイズすることができ、そして「セックス」のための異なるスタイルが(別のポータルを使用して、複数のクライアントのために同時に同じ性能、またはサービスでない場合を想像します)、クライアントプレゼンテーション層のための、さまざまな要件が異なっている場合、問題が来ました。ここでも、バックビューの単一責任の原則の観点から分析の設計レベル、に、サービス層は、唯一のビジネスのために責任があるにかかわらず、式の特定の形の、したがって、それは、DTOを返すフォームの出現と相まってすべきではありません。
最後に分析し、デザイン思考のレベルで理論的リターン理論は、我々はそれが達成レベルでそうする必要がありますか?ワンサイズは、すべてのアプローチは、多くの場合、ろうそくの価値ではないフィット、私はどのように正しい選択をするために、以下のアプリケーションを分析します。

アプリケーションVOとDTO
上記は、ちょうどこのセクションでは、アプリケーションで正しい選択をするためにどのように教えてくれます、コンセプトでVOとDTOとの違いを説明するために簡単な例を使用します。

次のシーンでは、VOとDTO 2イン1(注:レベルを達成するために)考えることができる前に:

需要は非常に明確かつ安定しており、クライアントが一つだけ時間がある非常に明確で、VOおよびDTOエリアを区別する必要がないときは、VOは、この時点で引退することができます、あなたはDTO引退とされていないのはなぜDTO、VOを使用することができますか?バック設計レベルまで、責任は、それはまだ「ギャルズ」を使用することはできません前の例のために、あなたは簡単に「性別」のために、DTOを理解することができ、そのため、サービス層の表示層と結合してはならないまま、変換が依存する必要があります(JavaScriptのような)スクリプトまたは他のメカニズム(JSTL、EL、CSS)のページ
クライアントをカスタマイズすることができても、または異なるクライアントの数があり、クライアントは、特定の技術(スクリプトや他のメカニズム)を使用することができる場合、変換を達成するために、また、引退VOができます

次のシナリオでは、優先度VO、DTOの共存を与える必要があります。

そのようなフレームワーク(例えば、フレックスなど)を自動提供するなどのいくつかの技術的な理由のためにいくつかの分野におけるUIのためのPOJOを変換し、実装レベルでのVOの定義を考慮し、このトレードオフをもたらすために自動変換フレームワークを使用する能力に完全に依存しますVO間の下落よりも1つ多くの開発・保守効率と設計、開発、保守効率をもたらすことを行います。

ページが複数のサービスを呼び出す必要があり、この大規模なビューのすべてのデータで構成され、「ビッグビュー」を、表示された場合はもちろん、それはまた、ワンタイム場所にサービス層を介してDTOの大規模なビューを返す提供することができます(複数DTOは、アセンブリに戻りますしかし、このような方法を提供するサービス層に適切である、私たちは)設計レベルのバランスを取る必要があります。

JAVAのJavaBeanに書かれたことは、再利用可能なコンポーネントです。JavaBeanの中に書かれており、特定のクラスは、パブリックでなければならない、と引数なしのコンストラクタを持ちます。デザインパターンの整合性に沿った一般的な方法を提供することによって、JavaBeanは、内部ドメインメンバプロパティを公開します。我々はすべて知っているように、このモデルに沿った属性名は、他のJavaクラスを発見し、独自のメカニズムを通じてこれらのJavaBeanのプロパティの動作をすることができます。
すなわち、目標値オブジェクトVOの値は、
主にオブジェクトビューに反映され、WEBページは、パッケージオブジェクトにページ全体の属性。次いで、交換制御層と層VOビュー・オブジェクトを送信しました。
DTO(治療が増加またはPOの特性を低下させることができる後PO経過):
データ転送オブジェクトデータ転送オブジェクトが
主に使用される遠隔呼転送オブジェクトなどの多数。
たとえば、私たちはテーブル内の100個のフィールドを持って、対応するPOは100個の特性を持っています。
しかし、我々は唯一のインターフェース10でフィールドを表示、
データを取得するWebサービスとクライアントは、それが全体のクライアントがオブジェクトPO渡す必要はありません、
我々は唯一の属性DTOとクライアント10に結果を渡すことができ、これはまた、このオブジェクトに対応する画面表示にする場合は、この時点でそれはVOのアイデンティティになっていますことを、クライアントに到達した後。サーバーのテーブル構造を公開していません。
POJO(POJOは、環境の変化にコンセプトやインターフェース、ステータスと役割の変更です):
POJO私有財産の対象として、パラメータの数があります。そして、各パラメータにアクセスするためのgetおよびsetメソッドとのインターフェースを定義して
、プレーン通常のJavaオブジェクトの単純なJavaオブジェクトを
それPOJOは、それが特別な役割を持っていないし、他のJavaフレームワーククラスやインターフェイスを継承するか、実装していないのJavaBean、EntityBeanの、などのビジネスロジックまたは永続ロジックを、含まれていますが、いないいない、シンプルな普通のJavaオブジェクトです。
POJOオブジェクトは、時には広く実際にオブジェクトのパフォーマンスで使用されるデータオブジェクトと呼びます。
POJO永続化後POです。
それは直接によって送信される、DTO転送処理がされている
対応する層を表すために直接使用VOであります

多くの場合、接触VOに来るのか、DTOの概念、実用的なモデリングエンティティの分野でのアプリケーションおよびプロジェクト部門二つの角度、これらのいくつかの概念王朝からのこの記事。

主な結論は次のとおりプロジェクトアプリケーション、VO対応するデータ(フォーム)でページ上に表示されるように、データベース(データテーブル)に格納されたデータに対応するDO、DTOは2つの必須の送信以外に対応しますデータ。

まず、エンティティクラス

Baiduの百科事典エンティティクラスの定義は次のよう:

エンティティクラスの主な責任は、それはまた、でも非常に複雑な行動を行動することができますが、これらの行動は密接に関連しているエンティティオブジェクトは、それが表す必要があり、内部情報の保存および管理システムです。

上記の定義に基づいて、我々は、エンティティ・クラスが二つの側面を持っているストアデータを理解し、データ関連の操作自体を実行することができます。最も簡単なエンティティクラスを達成するために、コンテンツに対応するの両方が設定された属性とメソッドを含む、対応するエンティティクラスの一般的なメソッドtoStringメソッド自体を取得するだけでなく、出力するデータPOJOクラスです。

第二に、ドメインモデルのエンティティクラス

モデルのエンティティクラスのフィールドには、4つのタイプに分けられます。VO、DTO、DO、PO、異なるクラス運用レベルのためのさまざまなエンティティ間の相互作用、および変換は、クラス階層内のエンティティ間で達成されます。

ビジネスは階層的である:ビュー層(VIEW + ACTION)、サービス層(SERVICE)、持続性(DAO)

以下に示す各層間エンティティ転送

プロジェクトでは、我々は、厳密にこの配信関係に従わなかったが、各エンティティクラスの役割についての我々の理解にこの協会とサービスのレベルが便利です。(POの理由は、我々はと接触していなかった、と私はPOのためのORMがカプセル化され把握します)

以下は、数字はこの図面に基づいて、元のデータです。

コンセプト:

VO(ビュー・オブジェクト):表示層のためのビュー・オブジェクトは、それが一緒にデータパッケージの全ての所与のページ(またはコンポーネント)の役割です。

DTO(データ転送オブジェクト):データ転送オブジェクトは、この概念は、本来の目的は、それによって呼を改善、分散コールの数を減らすために、粗粒分散分散アプリケーションEJBデータ・エンティティを提供することで、J2EEデザインパターンを付属しますパフォーマンスと減少し、ネットワークの負荷が、ここでは、私は、プレゼンテーション層とサービス層との間のデータ転送オブジェクトを指します。

DO(ドメインオブジェクト):ドメインオブジェクトは、現実の世界、有形または無形のビジネスエンティティから抽象化されています。

PO(永続オブジェクト):永続性は、リレーショナルデータベースである場合は永続層(通常はリレーショナルデータベース)のデータ構造は、1つのマッピング関係に1を形成している永続オブジェクト、テーブル内の各フィールドのデータ(あるいは1つ(または複数)の特性に対応するPOに)いくつかの。

モデル:

   下面以一个时序图建立简单模型来描述上述对象在三层架构应用中的位置

VOデータを形成するために、(フォームに記入してもよい)をユーザに要求Lは、プレゼンテーション層に整合されます。

サービス層に、DTOに記載のサービスメソッドに層に対応した表示層にL個のVO。

第一の層L DTOサービス構成データ(または再構成)DOは、特定のビジネスを達成するためにビジネスメソッドを呼び出してください。

Lサービスレイヤは、対応する永続PO(ORMツールを使用することができる、できない)、永続永続メソッド呼び出しに変換されてください、それは永続操作が完了し、POに渡します。

逆動作の場合、Lは、読み出しデータとして、送信され、わずかに、同様に変換されます。

第三に、プロジェクトのエンティティクラス

このプロジェクトは、一般的なエンティティクラスVOを持ちDOおよびDTO、しばしば命名することは、* VO.Javaとして対応する文字列、で終わります。DTOが、常にこの規則に従いますが、一般的に書かれたとして彼の使用、* Query.Javaに関連していない、それが保存されたクエリを表します。プロジェクトレベルのビジネスエンティティクラスはそれほど厳密ではない現れ、例えば、我々は、ビュー層もVOが永続化層、冗長ビットに関連付けられた階層分割及びビジネス方法から出てくることが可能でDOをアセンブルします。ページに対応VOデータが表示されるように、DTOの両方に加えて、必要なデータ転送に対応し、データベースに格納されたデータに対応していますか:アブストラクトは、プロジェクトコードから分かります。

いいえコピーしないと貼り付け、それを理解しやすいの書き込み。サブ成層は地獄を避けることができますので緩い破りました。これらのオブジェクトは、タイプ有する
VO(値オブジェクト)
の相互作用への復帰のためのフロントエンド。渡すオブジェクトの正面は、VO(ウェブ層)と呼ばれます。それは、あなたが安らかなインターフェイスに戻り呼び出しオブジェクトのフロントエンドです。

DTO(データ転送オブジェクト)
ビジネス層(BIZ層)を処理するための

一般的に、プロセスがされる
データなどのデータベース内のオブジェクトから取り出し、その後、第1のデータ処理dataDTOを変換する必要があります。次いで安らかVOを所望に変換正面に戻ります

再生するには、純粋な手は、私は理解していない場合は、採用してください私に尋ねてきました

おすすめ

転載: www.cnblogs.com/x-zhoulin/p/11364676.html