オブジェクト指向プログラミングでは、コンストラクターは、オブジェクトの作成時にオブジェクトを初期化するメソッドです。 Java では、すべてのクラスに少なくとも 1 つのコンストラクターが必要です。人気のオブジェクト リレーショナル マッピング フレームワークである Hibernate では、特定の理由からエンティティに引数のないコンストラクターが必要です。
引数のないコンストラクターが必要なのはなぜですか?
Hibernate はリフレクションを使用してオブジェクトをインスタンス化します。 リフレクション は、プログラムが実行時にクラスまたはオブジェクトの構造を検査または変更できるようにする手法です。 Class
影響
ほとんどの使用例では、no を指定します。 -argument コンストラクターは問題ではありません。ただし、引数のないコンストラクターが望ましくない、または実行不可能なシナリオも考えられます。そのような場合、シリアル化に基づいたハックを使用することが可能です。シリアル化には、オブジェクトをバイト ストリームに変換することが含まれます。バイト ストリームは、ネットワーク経由で送信したり、ファイルに保存したりできます。シリアル化を使用すると、コンストラクターを呼び出さずにオブジェクトを作成できます。
Hibernate の設計上の決定
Hibernate の設計者は、すべての Java との互換性を維持することを選択しました。仮想マシン (VM)。すべての VM が、引数なしのコンストラクター要件を回避するハッキングに必要な拡張モードをサポートしているわけではありません。したがって、Hibernate は、引数のないコンストラクターを必要とする、公式にサポートされている Class
引数のないコンストラクターを要求することにより、Hibernate は、引数のないコンストラクターを要求することにより、 VM 環境に関係なく、一貫した信頼性の高い方法でオブジェクトをインスタンス化できます。これにより、開発プロセスが簡素化され、さまざまなプラットフォーム間で Hibernate アプリケーションの互換性が保証されます。
以上がHibernate がエンティティに対して引数のないコンストラクターを必要とするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。