2017-12-09 7 views
0

私は以下のエンティティを持っています。私は最終的な決定を下す前にいくつかの追加の考えをしたいと思います。親子データを維持する効果的な方法を休止

ポスト

@Entity 
public class Post { 

@Id 
@GeneratedValue 
private long id; 
private String author; 
private String content; 
private String title; 

@OneToMany 
private List<Comment> comments; 

// Standard getters and setters... 

}

そして、子行

@Entity 
public class Comment { 

    @Id 
    @GeneratedValue 
    private long id; 
    private String author; 
    private String content; 

    @ManyToOne 
    private Post post; 

    // Standard getters and setters... 
} 

ポストを保持しているエンティティは、コメントの大きな数を持つことができ、もちろんそれらのほとんどはありませんユーザーセッション中に変更されました。以下のシナリオでデータを保存する最良の方法を知りたいと思います。 1.投稿データは変更されません。 2.投稿データが変更されました。

標準的な方法は、次のコード

Post saved = postRepository.save(post); 

を使用することです。しかし、あなたが唯一のコメントを追加またはポストに変更したときに、このアプローチが最も有効なのでしょうか?ここでのアプローチが異なっていれば、つまり、投稿エンティティとコメントエンティティの1対1の関係を削除し、別々に扱うかどうかです。また、データベースで更新する必要がある投稿オブジェクトに多数のコメントが含まれている可能性があり、その結果ネットワークに負荷がかかります。

答えて

0

あなたはそれだけでポストエンティティ

@OneToMany(cascade = CascadeType.ALL ,mappedBy = "post") 
private List<Comment> comments; 

はまた、あなたのエンティティをチェックし、汚れの作品を休止保存/更新されます他のポストエンティティにカスケードを必要とする仕事をすることが第一。

あなたがPost実体に触れると、ちょうど1 Comment Hibernateは1回の更新を生成します更新しないので、もし、汚れた管理対象エンティティをチェックして、ちょうどあなたが変更されたエンティティのための1つの更新クエリを生成しますマージ(更新)中に休止状態クエリ。

また、この句は意味をなさない。

また、私は、データベース内の を更新する必要がポストオブジェクトは、順番に は、ネットワーク上の追加の負荷を追加するコメントが多数、含まれていてもよいという考えを好きではありません。

Postで指定されたOneToManyの関係は、休止状態の便宜のためのものであり、実際はオプションです。 これで、双方向関係と呼ばれるものを定義します。

Commentのfkを参照する以外は何もありませんPost

関連する問題