web-dev-qa-db-ja.com

モデル、javabean、POJOの違い

私は春からMVCを学び始めました。セッターとゲッターを含むBeanをたくさん聞いたことがあります。 Modelは基本的にデータが流れるものであり、PojoBeanと同じです。しかし、私はこのすべての用語で本当に混乱していて、これはすべて私には同じように見えます。それらすべての正確な違いを説明してください。

[〜#〜] javabean [〜#〜]

[〜#〜] pojo [〜#〜]

[〜#〜]モデル[〜#〜]

15
Varun

MVCアーキテクチャを使用している場合、モデルはドメインを表します。つまり、エンティティを意味し、Java関連用語ではありません。
モデルはJava as Java Beans(Java EE)のベストプラクティス)で表されます。
A Java Beanは通常のJavaクラスであり、Serializableインターフェースを実装し、パラメーターなしのコンストラクターを持ち、各フィールドにゲッターとセッターを持ちます。

ただし、POJOは、Java言語仕様( Wikipeadia )によって強制されるもの以外の制限に拘束されないオブジェクトの単なる宗派です。これは慣例のためであり、 MVCアーキテクチャとは厳密には関係ありません。
Java Beanは、Serializableインターフェースを実装するPOJOであることに注意してください。

20
Fourat

唯一の違いは、Beanをシリアル化できることです。

From Java docs -- http://docs.Oracle.com/javase/7/docs/api/Java/io/Serializable.html

クラスの直列化可能性は、Java.io.Serializableインターフェースを実装するクラスによって有効になります。このインターフェイスを実装しないクラスでは、状態がシリアル化または逆シリアル化されません。シリアライズ可能なクラスのすべてのサブタイプは、それ自体がシリアライズ可能です。シリアル化インターフェイスにはメソッドやフィールドがなく、シリアル化可能であることのセマンティクスを識別するためだけに機能します。

モデルはビジネスロジックを扱う別のものですが。

あなたは以下のリンクを参照することができます

POJOとBeanのプログラミングの違い

2
Pratik

補足として、各項目の意図を説明する必要があります。

wiki から定義されているように、

「POJO」という用語は、最初はJavaオブジェクトであり、主要なJavaオブジェクトモデル、規則、またはフレームワークのいずれにも従わない)

理想的には、POJOはJavaオブジェクトであり、Java言語仕様によって強制されるもの以外の制限に拘束されません。

通常、POJOはライブラリ、インターフェイス、または注釈に依存しません。したがって、POJOは別のシステムで再利用される可能性が高くなります。

では、Java Beanとは何ですか?なぜこのアイテムを作成するのですか?
このリンク からの説明は、私が思うに十分に明確にした。

JavaBeansは、多くのオブジェクトを1つのオブジェクト(Bean)にカプセル化するクラスです。これらはシリアライズ可能で、引数なしのコンストラクターを持ち、getterメソッドとsetterメソッドを使用してプロパティにアクセスできます。

なぜJaveBeanをこのように動作させたいのですか?

  • クラスには、パブリックのデフォルトコンストラクター(引数なし)が必要です。

これにより、編集およびアクティベーションフレームワーク内で簡単にインスタンス化できます。

  • クラスプロパティは、標準の命名規則に従って、get、set、is(getの代わりにブールプロパティに使用できます)、to、およびその他のメソッド(いわゆるアクセサーメソッドとミューテーターメソッド)を使用してアクセスできる必要があります。

これにより、フレームワーク内のBean状態の自動検査と更新が簡単になります。フレームワークの多くには、さまざまなタイプのプロパティのカスタムエディターが含まれています。セッターは、1つまたは複数の引数を持つことができます。

  • クラスはシリアル化可能である必要があります。

これにより、アプリケーションとフレームワークは、VMおよびプラットフォームに依存しない方法で、Beanの状態を確実に保存、保存、および復元できます。

通常、モデルはPOJOまたはJaveBeanと比較されないため、まったく異なるアイテムになります。他の回答で述べたように、モデルは一般的に [〜#〜] mvc [〜#〜] の概念です。

モデルはパターンの中心的なコンポーネントです。これは、ユーザーインターフェイスに依存しない、アプリケーションの動的なデータ構造です。[6]アプリケーションのデータ、ロジック、ルールを直接管理します。

ご覧のとおり、POJOまたはJavaBeanはMVCパターンのモデルレイヤーにある可能性がありますが、モデルレイヤーですが、アプリケーションのロジックやルールなど、モデルレイヤーにはさらに多くのものがあります。

0
Eugene