4

質問のタイトルで言及されている概念は、ある程度同義ですか?主な違いはどこにあり(コンテキスト、構造など)、あるものを別のサブセットと見なすことができますか?ウィキペディアから抜粋した簡単な定義を次に示します。

POJO(Plain Old Java Object) Wikipedia

コンピューティングソフトウェアでは、POJOはPlain OldJavaObjectの頭字語です。この名前は、特定のオブジェクトが通常のJavaオブジェクトであり、特別なオブジェクトではなく、特にEnterpriseJavaBeanではないことを強調するために使用されます。この用語は、2000年9月にマーティンファウラー、レベッカパーソンズ、ジョシュマッケンジーによって造られました。

"We wondered why people were so against using regular objects in their
 systems and concluded that it was
 because simple objects lacked a fancy
 name. So we gave them one, and it's
 caught on very nicely."

Java BeanWikipedia

JavaBeansは、ビルダーツールで視覚的に操作できるJava用の再利用可能なソフトウェアコンポーネントです。実際には、これらは特定の規則に準拠したJavaプログラミング言語で記述されたクラスです。これらは、多くのオブジェクトを単一のオブジェクト(Bean)にカプセル化するために使用されるため、複数の個別のオブジェクトとしてではなく、単一のBeanオブジェクトとして渡すことができます。JavaBeanは、シリアライズ可能で、nullaryコンストラクターを持ち、getterメソッドとsetterメソッドを使用してプロパティにアクセスできるJavaオブジェクトです。

値オブジェクト ウィキペディア

以前は値オブジェクトまたはVOと呼ばれていたデータ転送オブジェクト(DTO)は、ソフトウェアアプリケーションサブシステム間でデータを転送するために使用されるデザインパターンです。DTOは、データベースからデータを取得するために、データアクセスオブジェクトと組み合わせて使用​​されることがよくあります。

ビジネスオブジェクト ウィキペディア

ビジネスオブジェクトは、n層のオブジェクト指向コンピュータプログラムのビジネス層内のアクターである理解可能なエンティティの一種です。

関連している:

DTO、VO、POJO、JavaBeansの違いは? JavaBeanとPOJOの違いは何ですか? DDD:エンティティと値オブジェクトの違いの使い方は何ですか?

4

4 に答える 4

6

これらの分類のすべてが関連しているわけではありません。これが私の理解です:

  • POJOは、その名前が示すとおり、プレーンオールドJavaオブジェクトです。特別なことは何もありません。そして、これはまさに、オブジェクトがPOJOであると言うときに伝えたいことです。今日、ほとんどのアプリケーションはある種の基盤となるフレームワークを使用しており、フレームワークには、フレームワークと統合するオブジェクトに対する要件があります。オブジェクトは、インターフェイスを実装するか、クラスを拡張する必要があります。オブジェクトがPOJOであると言うとき、それは単なる通常のオブジェクトであり、フレームワークに依存しないことを意味します。

  • JavaBeanは、質問で説明されている特定の規則に従うJavaクラスです。このようなオブジェクトは、リフレクションを使用してオブジェクトのプロパティ(ゲッター/セッターからアクセス可能)を見つけて操作する特定のフレームワークによって義務付けられることがよくあります。たとえば、JSPに公開されたBean、Spring Beanなどです。JavaBeanの良い点は、それらがまだPOJOであるということです。 。これらは特定の規則に従いますが、規則は特定のフレームワークによって定義されるのではなく、Sun Javabean標準によって定義され、クラスはサードパーティのフレームワークのクラスやインターフェイスとは関係のないプレーンなJavaクラスです。

  • ビジネスオブジェクトは、ビジネスドメインエンティティを表すオブジェクトを指します。これらは通常、ビジネスレイヤー(すべてのビジネスロジックが存在するレイヤー)に存在します。これらのオブジェクトは通常、テーブルなどの永続ストアエンティティにマップされます。これらのオブジェクトは、POJO、JavaBeans、EJBなどです。

  • 値オブジェクトは一種のデザインパターンです。一部の小さなWebアプリケーションでは、Webレイヤーでもビジネスオブジェクトを使用するオプションがあります。ただし、大規模なアプリケーションまたはJ2EEアプリケーションでは、ビジネスレイヤーからWebレイヤーに情報を移動するための値オブジェクトを定義します。そのため、これらはデータ転送オブジェクト(DTO)とも呼ばれます。これらのオブジェクトは通常、Webレイヤーで必要な属性のみを持ち、ビジネスレイヤーの消費を目的としたビジネスオブジェクトの属性を残します。また、ビジネスレイヤーで生成される「計算された」属性を持つ場合もあります。このパターンを使用すると、ビジネスレイヤーとWebレイヤーを分離するのに役立ちます。

于 2010-07-10T16:09:21.320 に答える
3

これが私の見解です:

  1. ビジネスオブジェクトは、問題を表す抽象的なアイデアの総称です。それらは任意の言語で実装できます。Javaでは、POJOまたはEJB、可変または不変である可能性があるため、追加の選択肢があります。
  2. 値オブジェクトまたはDTOは、レイヤー間でデータを転送するために使用されます。それらは通常不変です。これらは、POJOまたはJavaBeansとして実装できます。それらをPOJOの別のサブセットと考えてください。
  3. Java Beanは、元のSun仕様に準拠しています。これらは、VBスタイルのIDEに簡単に接続できるインターフェイスを提供することを目的としていました。これらをPOJOのサブセットと考えてください。
  4. JavaBeansとEnterpriseJavaBeansの違いについて混乱することがあります。Java Beansは、元のJava 1.0仕様の一部であり、VBコンポーネントのようにすることを目的としています(「BeanBox」を覚えていますか?)。Enterprise Java Beansは、特別なJavaオブジェクトがJavaEEアプリサーバーと相互運用するための特定のインターフェイスを実装する方法を説明した仕様に準拠しています。アプリサーバーは、スレッド化、永続性、プーリング、オブジェクトライフサイクル、メッセージング、ネーミングなどを処理する分散コンポーネントアーキテクチャのトランザクションモニターでした。EJBは、JavaEEアプリのコンテキスト内でのみ機能するJavaオブジェクトの非常に特殊なサブセットです。サーバ。
  5. POJOは、Java Bean標準に準拠するように実装できますが、必須ではありません。すべてのJavaオブジェクトはPOJOとしての資格があります。もともとは、JavaEEアプリサーバーと適切に相互運用するためにいくつかのインターフェースを必要とするEJBバージョン2.0と区別することを目的としていました。
于 2010-07-10T15:13:15.877 に答える
1

問題は、これらの一部を同義語として使用するのが間違いであるかどうか(一部の人がそうしていると聞いたように)、特定の分類をサブセットまたは別の分類と見なすことができるかどうかです。

これらの用語を同義語として使用するのは誤りです。それらは明らかに明確な意味を持っています。引用された定義(および他の回答で提供されているもの)は、これを明確にしています。

ただし、これらの用語の多く(またはすべて)を使用して同じオブジェクトを説明することがしばしば有効である場合。それはすべて視点の問題です。つまり、強調しようとしているオブジェクトの側面。

于 2010-07-10T18:29:48.443 に答える
0

合成(与えられた回答から):

  • POJO:フレームワークへの依存関係のない通常のオブジェクト。それ自体を要件にすることなく、JavaBean標準に準拠するように適合させることができます。
  • JavaBean:SunJavaBeanまたはJava1.0仕様に準拠するオブジェクト(「Beanボックス」を参照)。これらは元々、ほとんど問題なくVBスタイルのIDEにプラグインできるようにインターフェイスを提供することを目的としていました。POJOのサブセットと見なすことができ、フレームワークから独立したままです。プロパティにアクセスするために、リフレクションなどの特定のメカニズムを使用できます。
  • エンタープライズJavaBean:これらをJavaBeanと混同しないでください。バージョン3.0でもたらされた単純化により、EJBはPOJOと同等であると見なすことができます。EJB自体は、JavaEEサーバーと相互運用できる特別なJavaオブジェクトを記述する仕様です。サーバー自体は、スレッド化、永続化、プーリング、オブジェクトライフサイクル、メッセージング、ネーミングなどを処理する分散コンポーネントアーキテクチャのコンテキストでトランザクションモニターとして機能しました。そのため、EJBは、JavaEEアプリケーションサーバーの接続で使用される非常に特別なサブセットと見なすことができます。
  • ビジネスオブジェクト:特定の問題を表すのに役立つ理論的概念または抽象的なアイデア。これはビジネスドメインエンティティを表し、アプリケーションのビジネスレイヤーに存在します。それらは、永続性のコンテキストでエンティティにマップできます。オブジェクトはPOJO/JavaBean / EJBであり、可変または不変のいずれかです。
  • 値オブジェクト/データ転送オブジェクト:ビジネスレイヤーとWebレイヤーを分離するのに役立つデザインパターンを採用しています。これは、オブジェクトがレイヤー間を移動できる大規模なアプリケーション(たとえば、ビジネスレイヤーとWebレイヤー)のコンテキストに適しています。これらは通常、本質的に不変であり、POJOまたはJavaBeanのいずれかとしてフォーマットできます。1つの特殊性は、ビジネスレイヤーで生成される計算された属性を含めることができることです。

PS:コミュニティウィキとしてマークされているので、自由に編集してください。

于 2010-07-10T19:10:01.703 に答える