違いがよくわかりません。私は Hibernate を使用していますが、一部の本では、JavaBean と POJO を交換可能な用語として使用しています。Hibernate のコンテキストだけでなく、一般的な概念として違いがあるかどうかを知りたいです。
10 に答える
JavaBean は特定の規則に従います。ゲッター/セッターの命名、パブリックなデフォルト コンストラクターの使用、シリアライズ可能など。詳細については、JavaBeans 規則を参照してください。
POJO (plain-old-Java-object) は厳密には定義されていません。これは、特定のインターフェイスを実装したり、特定の基本クラスから派生したり、特定のフレームワークとの互換性を保つために特定の注釈を使用したりする必要のない Java オブジェクトであり、任意の (多くの場合比較的単純な) ものにすることができます。 Java オブジェクト。
すべての JavaBeans は POJO ですが、すべての POJO が JavaBeans というわけではありません。
JavaBean は、特定のプログラミング規則を満たす Java オブジェクトです。
- JavaBean クラスは Serializable または Externalizable を実装する必要があります。
- JavaBean クラスには、引数なしの public コンストラクターが必要です。
- すべての JavaBean プロパティには、(必要に応じて) パブリック セッター メソッドとゲッター メソッドが必要です。
- すべての JavaBean インスタンス変数は非公開にする必要があります。
Martin Fowler によると、POJO はビジネス ロジックをカプセル化するオブジェクトですが、Bean (他の回答で既に述べた定義を除く) はデータを保持するためのコンテナーにすぎず、オブジェクトで使用できる操作は単にデータを設定および取得するだけです。
この用語は、Rebecca Parsons、Josh MacKenzie、および私が 2000 年 9 月の会議で講演の準備をしているときに造られました。講演では、エンティティ Bean を使用するのではなく、ビジネス ロジックを通常の Java オブジェクトにエンコードすることの多くの利点を指摘していました。私たちは、人々がシステムで通常のオブジェクトを使用することに反対する理由を疑問に思い、単純なオブジェクトには派手な名前がないためであると結論付けました。それで私たちは彼らにそれを与えました、そしてそれは非常にうまく受け入れられました.
POJO: 基礎となる JDK を使用してクラスを実行できる場合、他の外部サードパーティ ライブラリのサポートなしで、POJO が呼び出されます。
JavaBean: クラスにアクセサー (セッターとゲッター) を持つ属性のみが含まれる場合、それらは javabeans と呼ばれます。Java Bean には通常、ビジネスロジックは含まれず、データを保持するために使用されます。
すべての Javabean は POJO ですが、すべての POJO は Javabean ではありません
POJOS特定の規則 (getter/setter、public no-arg コンストラクター、private 変数) を使用し、動作中 (例: フォームによるデータの読み取りに使用) はJAVABEANS.