2017-02-15 1 views
0

私はJPAの初心者です。私と一緒にいらしてください。 私は使用するオプションを決めることができないので、 。JPAはフィールドアクセス、create.query、update.query、プロパティアクセス、findとsetterを使用する必要があります

オプション1: 私は、エンティティのフィールド上の注釈を配置し、コンストラクタでのみ作成時にオブジェクトへの書き込みアクセスを許可する(して、データベースに保存します)。私が理解しているように、JPAマネージャーは、フィールドアクセス(hierと記されている)以来、更新クエリを実行することができます。 このようにして、エントリを更新または変更したい場合は、新しいクエリを作成する必要があります。 しかし、これらのクエリを自分で作成する必要があります(hier)。

オプション2: 私はゲッター/セッターの上に注釈を配置し、プロパティアクセス を使用して、一緒にセッター(hierのような)とエンティティマネージャの方法を見つけてください。これは私のためのクエリを作成しますが、設定者は作成後(データベースに追加する前に)オブジェクトを変更できるようになりました。

私の意見も hierトップの答えは、エンティティを更新する正しい方法は、あなただけのセッターで更新してみましょうにしたい プロパティを設定することであるセッター

を使用することを推奨していながら、 JPAのフラッシュの代わりに、手動で

Hier有する第2の答えを(それを書く時にあなたのための 更新SQLを生成しますほとんどのアップフォース)は、フィールドアクセスが道にあると述べています。

私は混乱していますが、おそらく2番目のオプションをコンストラクタとともに使用し、Entity Managerに対してのみsetterを使用し、settersパッケージを非公開にします。

のJava EE6

  • との情報の永続プロバイダとしてEclipseLinkは2.5+を使用して

    • イムとJPA 2.0 私はSAPの花クラウドプラットフォームと そこtutorial使用していることで動作することを言及している必要があります最初のオプションはセッターで、代わりに のコンストラクターです。

    質問: 私はJPAの初心者として、唯一のエントリ1-30日後に削除されますログ記録の目的のためにデータベースのオプション1または2を使用する必要があります。 ?

  • +1

    http://stackoverflow.com/questions/4188048/why-should-anybody-put-annotations-on-the-getters-or-setters -when-using-jpa-to-m – perissf

    +0

    私はそれを前に読んでいて、2番目のオプションをサポートしています。今は特定のアクセス部分を見ています。 – MADforFUNandHappy

    答えて

    1

    IMHO第2アプローチをとるべきです。 ORMとJPAの全体のポイントは、データベースを処理してクエリを書く必要を避けることです。第1のアプローチのパフォーマンス上のメリットは無視できますが、同期、可読性およびコードのメンテナンスで直面する問題の価値はありません。

    このように言えば、このハッキングを保証するシナリオがあるかもしれません。たとえば、書き込み操作を実行して読んでいない場合は、メモリにログオブジェクトがあふれないようにします。これについてあまりよく分からない場合は、2番目の方法を使用することをお勧めします。

    +0

    私はこれに同意し、誰かが正当な理由がないか確認することができます。 – MADforFUNandHappy

    関連する問題