今、私はJPAを学んでいます。JPA は、Public メソッドとプライベート フィールドが必要であり、変数を使用する static と final を持たないことを推奨しています。また、空のコンストラクター..なぜこの形式が必要なのですか.???
質問する
2470 次
1 に答える
5
実際の仕様では推奨されていません。次のことはむしろ規範的です (とりわけ):
- パブリックまたは保護された引数なしのコンストラクターが存在する必要があります。追加のコンストラクターは問題ありません。
- 永続的なフィールドは公開しないでください (保護され、パッケージが表示され、非公開は声に出されます)。
- 最終的な永続的な属性またはメソッドは声に出されません。
これらの制限の理由は次のとおりです。
- JPA プロバイダーは、エンティティーのインスタンスを作成する必要があります。クラスに任意の引数を取るコンストラクターのみが含まれる場合、JPA プロバイダーはそれらの引数の値を把握できません。
- クラスの外部からフィールドに直接アクセスしてはならないため、おそらく公的な可視性は単に声に出されていません。または、もっと良い理由があるかもしれませんが、私はそれを認識していません。
- プロバイダはプロキシを作成しようとしていますが、メソッドが final の場合は作成できません。また、プロバイダーはそれらに値を割り当てることができないため、属性は最終的なものであってはなりません。
さらに、エンティティのすべてのインスタンスで 1 つの値が共有されるのはなぜなので、静的永続属性はあまり意味がありません。
于 2012-09-09T18:13:56.580 に答える