この状況では、flush()(JPAインターフェース)を呼び出す必要がありますか?

Kewei Shang:

なぜなら、すべてのエンティティを取得するためにflush()を呼び出すと、メモリからデータベースに永続化されます。そのため、不必要なflush()を過度に呼び出すと、時間がかかる可能性があるため、パフォーマンスの選択には適していません。ここに、flush()を呼び出すタイミングがわからないシナリオがありますか?

//Order and Item have Bidirectional Relationships
Order ord = New ord("my first order");
Item item = New Item("tv",10);

//...process item and ord object

em.persist(ord);//em is an instance of EntityManager
em.flush();// No.1 flush()

item.setOrder(ord);
em.persist(item);

Set<Item> items= new HashSet<Item>();
items.add(item);
ord.setItems(items);

em.flush();// No.2 flush()

私の質問は、No.1フラッシュの呼び出しを回避できるかどうかです。

私が心配しているのは、item.setOrder(ord)を実行するために、ordのデータベースIDが必要です。また、em.persist(ord)だけを呼び出してもデータベースIDを生成できないため、item.setOrder(ord)の前にem.flush(を呼び出す必要がありますだからあなたの意見の人は何ですか?

前もって感謝します。

Salandur:

最初に構造を作成し、その後すべてを永続化する必要があります。

Order ord = New ord("my first order");
Item item = New Item("tv",10);

item.setOrder(ord);

Set<Item> items= new HashSet<Item>();
items.add(item);
ord.setItems(items);

em.persist(ord);

このようにして、ツリー全体を1回の呼び出しで永続化し、フラッシュは不要です。

優れたオブジェクト設計では、duffymoで説明した方法を使用してオブジェクトをワイヤリングする必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

機能インターフェースを直接呼び出す必要がありますか?

分類Dev

Pythonでファイルハンドラーのflushメソッドを呼び出す必要がありますか

分類Dev

フェニックスの初期化コードはどこで呼び出す必要がありますか?これにはデータベースへの接続が含まれる可能性がありますか?

分類Dev

コンストラクターで常にこれを呼び出す必要がありますか?

分類Dev

この状況で、例外をスローするメソッドの呼び出し元が例外を処理する必要がないのはなぜですか?

分類Dev

この状況で、例外をスローするメソッドの呼び出し元が例外を処理する必要がないのはなぜですか?

分類Dev

この状況でファイルを閉じる必要がありますか?

分類Dev

式は完全なオブジェクトタイプへのポインタである必要がありますが、この状況でこのエラーが発生するのはなぜですか?

分類Dev

コンストラクターの最初の行でparent :: __construct()を呼び出す必要がありますか?

分類Dev

Pythonでは、super()は常にメソッドの最初に呼び出されます。後で呼び出す必要がある状況はありますか?

分類Dev

パターンマッチングでこの関数の呼び出しを繰り返す必要がない方法はありますか?

分類Dev

ベースインターフェイスを作成してそこから実装したい場合、次のメソッドまたはプロパティ間で呼び出しがあいまいになります

分類Dev

iOS:この状況では、デリゲートまたはNSNotificationを使用する必要がありますか?

分類Dev

laravelリポジトリ-リポジトリファイルを直接呼び出すのではなく、インターフェイスを呼び出す必要があるのはなぜですか?

分類Dev

データを使用するメソッドはどこで呼び出す必要がありますか?

分類Dev

別のソースからArrayコンストラクターを指定する必要があるのはなぜですか?また、配列オブジェクトでtoString()を直接呼び出すことができないのはなぜですか?

分類Dev

サービスが別のサービスを呼び出すか、それ自体のデータをフェッチする必要があります

分類Dev

このメソッドを呼び出すには、「Membership.Provider」プロパティが「ExtendedMembershipProvider」のインスタンスである必要があります。

分類Dev

データをフェッチすると、状態が設定されていることがわかりますが、状態からデータを呼び出すと、オブジェクトが未定義であることが表示されます

分類Dev

Typescriptインターフェース:タイプ '文字列のすべての構成要素ではありません| (()=> string) 'は呼び出し可能です。タイプ「文字列」には呼び出し署名がありません

分類Dev

親インターフェースのデフォルトメソッドを、そのインターフェースをサブクラス化するインターフェースから呼び出すことができますか?

分類Dev

Azure関数を呼び出してスノーフレークのプロシージャを呼び出してデータをロードすると、消費プランでタイムアウトが発生しますが、これを実現する別の方法はありますか?

分類Dev

すべてのノードのJSファイルでdotenvを呼び出す必要がありますか?

分類Dev

インデックスは何らかのコレクションで呼び出す必要があります:データフレームに列名を割り当てます

分類Dev

13.10でリモートサービスを呼び出すインジケーターのサンプルプロジェクトはありますか?

分類Dev

13.10でリモートサービスを呼び出すインジケーターのサンプルプロジェクトはありますか?

分類Dev

デストラクタを手動で呼び出すと、エラーが発生します。式は完全なオブジェクトタイプへのポインタである必要があります

分類Dev

インターフェイスのメソッドは例外をスローする必要がありますか?

分類Dev

コンパイル時に、指定されたパラメータータイプのセットでジェネリックラムダを正常に呼び出すことができるかどうかを検出する方法はありますか?

Related 関連記事

  1. 1

    機能インターフェースを直接呼び出す必要がありますか?

  2. 2

    Pythonでファイルハンドラーのflushメソッドを呼び出す必要がありますか

  3. 3

    フェニックスの初期化コードはどこで呼び出す必要がありますか?これにはデータベースへの接続が含まれる可能性がありますか?

  4. 4

    コンストラクターで常にこれを呼び出す必要がありますか?

  5. 5

    この状況で、例外をスローするメソッドの呼び出し元が例外を処理する必要がないのはなぜですか?

  6. 6

    この状況で、例外をスローするメソッドの呼び出し元が例外を処理する必要がないのはなぜですか?

  7. 7

    この状況でファイルを閉じる必要がありますか?

  8. 8

    式は完全なオブジェクトタイプへのポインタである必要がありますが、この状況でこのエラーが発生するのはなぜですか?

  9. 9

    コンストラクターの最初の行でparent :: __construct()を呼び出す必要がありますか?

  10. 10

    Pythonでは、super()は常にメソッドの最初に呼び出されます。後で呼び出す必要がある状況はありますか?

  11. 11

    パターンマッチングでこの関数の呼び出しを繰り返す必要がない方法はありますか?

  12. 12

    ベースインターフェイスを作成してそこから実装したい場合、次のメソッドまたはプロパティ間で呼び出しがあいまいになります

  13. 13

    iOS:この状況では、デリゲートまたはNSNotificationを使用する必要がありますか?

  14. 14

    laravelリポジトリ-リポジトリファイルを直接呼び出すのではなく、インターフェイスを呼び出す必要があるのはなぜですか?

  15. 15

    データを使用するメソッドはどこで呼び出す必要がありますか?

  16. 16

    別のソースからArrayコンストラクターを指定する必要があるのはなぜですか?また、配列オブジェクトでtoString()を直接呼び出すことができないのはなぜですか?

  17. 17

    サービスが別のサービスを呼び出すか、それ自体のデータをフェッチする必要があります

  18. 18

    このメソッドを呼び出すには、「Membership.Provider」プロパティが「ExtendedMembershipProvider」のインスタンスである必要があります。

  19. 19

    データをフェッチすると、状態が設定されていることがわかりますが、状態からデータを呼び出すと、オブジェクトが未定義であることが表示されます

  20. 20

    Typescriptインターフェース:タイプ '文字列のすべての構成要素ではありません| (()=> string) 'は呼び出し可能です。タイプ「文字列」には呼び出し署名がありません

  21. 21

    親インターフェースのデフォルトメソッドを、そのインターフェースをサブクラス化するインターフェースから呼び出すことができますか?

  22. 22

    Azure関数を呼び出してスノーフレークのプロシージャを呼び出してデータをロードすると、消費プランでタイムアウトが発生しますが、これを実現する別の方法はありますか?

  23. 23

    すべてのノードのJSファイルでdotenvを呼び出す必要がありますか?

  24. 24

    インデックスは何らかのコレクションで呼び出す必要があります:データフレームに列名を割り当てます

  25. 25

    13.10でリモートサービスを呼び出すインジケーターのサンプルプロジェクトはありますか?

  26. 26

    13.10でリモートサービスを呼び出すインジケーターのサンプルプロジェクトはありますか?

  27. 27

    デストラクタを手動で呼び出すと、エラーが発生します。式は完全なオブジェクトタイプへのポインタである必要があります

  28. 28

    インターフェイスのメソッドは例外をスローする必要がありますか?

  29. 29

    コンパイル時に、指定されたパラメータータイプのセットでジェネリックラムダを正常に呼び出すことができるかどうかを検出する方法はありますか?

ホットタグ

アーカイブ