Wenn Sie eine Beziehung zu Hibernate ausdrücken, fügen Sie unten eine Anmerkung wie @OneToMany hinzu.
User.java
@Getter
@Setter
@NoArgsConstructor
@Entity
public class User {
public User(Long id, String name, Integer age, Set<Post> posts){
this.id = id;
this.name = name;
this.age = age;
this.posts = posts;
}
private Long id;
private String name;
private Integer age;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "user" )
private Set<Post> posts = new HashSet<>();
}
Beiträge werden mit @OneToMany kommentiert. Sie können beim Abrufen dieses Arguments entweder FetchType.EAGER oder FetchType.LAZY angeben. Übrigens, wenn nicht angegeben, ist es standardmäßig LAZY. Was ist der Unterschied zwischen den beiden?
Im Fall von LAZY werden Posts nicht geladen, wenn die Benutzerinstanz von Hibernate aufgerufen wird. Mit anderen Worten, user.getPosts () ist Null. Andererseits wird im Fall von EAGER das Objekt mit der Beziehung auch gelesen, wenn die Instanz aufgerufen wird, sodass user.getPosts () nicht null ist.
LAZY: Sie müssen vorsichtig mit Null sein, aber Sie können den Speicher effizient nutzen. EAGER: Nicht null, aber schwere Last.
Die Standardeinstellung LAZY wird für Spring Boot empfohlen. Im vorherigen Beispiel ist es möglich, dass Beiträge nur angezeigt werden, wenn sich der Benutzer anmeldet. Daher ist es vorzuziehen, eine separate Repository-Klasse vorzubereiten und die Lesebedingungen anzugeben.
LAZY wird grundsätzlich empfohlen, aber manchmal ist es nützlich, EAGER zu verwenden, um NullPointerExceptions-Fehler zu vermeiden.
https://howtoprogramwithjava.com/hibernate-eager-vs-lazy-fetch-type/
Recommended Posts