0

今、私はJPAを学んでいます。JPA は、Public メソッドとプライベート フィールドが必要であり、変数を使用する static と final を持たないことを推奨しています。また、空のコンストラクター..なぜこの形式が必要なのですか.???

4

1 に答える 1

5

実際の仕様では推奨されていません。次のことはむしろ規範的です (とりわけ):

  1. パブリックまたは保護された引数なしのコンストラクターが存在する必要があります。追加のコンストラクターは問題ありません。
  2. 永続的なフィールドは公開しないでください (保護され、パッケージが表示され、非公開は声に出されます)。
  3. 最終的な永続的な属性またはメソッドは声に出されません。

これらの制限の理由は次のとおりです。

  1. JPA プロバイダーは、エンティティーのインスタンスを作成する必要があります。クラスに任意の引数を取るコンストラクターのみが含まれる場合、JPA プロバイダーはそれらの引数の値を把握できません。
  2. クラスの外部からフィールドに直接アクセスしてはならないため、おそらく公的な可視性は単に声に出されていません。または、もっと良い理由があるかもしれませんが、私はそれを認識していません。
  3. プロバイダはプロキシを作成しようとしていますが、メソッドが final の場合は作成できません。また、プロバイダーはそれらに値を割り当てることができないため、属性は最終的なものであってはなりません。

さらに、エンティティのすべてのインスタンスで 1 つの値が共有されるのはなぜなので、静的永続属性はあまり意味がありません。

于 2012-09-09T18:13:56.580 に答える