Wenn ich nach @NaturalId suche und versuche zu verstehen, welche Vorteile die Verwendung davon hat. Ich lese mehrere Artikel wie diesen.
@Entity(name = "Post")
@Table(name = "post")
@org.hibernate.annotations.Cache(
usage = CacheConcurrencyStrategy.READ_WRITE
)
@NaturalIdCache
public class Post {
@Id
@GeneratedValue
private Long id;
private String title;
@NaturalId
@Column(nullable = false, unique = true)
private String slug;
//Getters and setters omitted for brevity
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass())
return false;
Post post = (Post) o;
return Objects.equals(slug, post.slug);
}
@Override
public int hashCode() {
return Objects.hash(slug);
}
}
Und beim Abrufen des Datensatzes wird der folgende Ansatz verwendet:
String slug = "high-performance-java-persistence";
Post post = entityManager.unwrap(Session.class)
.bySimpleNaturalId(Post.class)
.load(slug);
Ich frage mich, was soll ich tun, wenn ich @NaturalId aus dem Slug-Feld entferne und den Datensatz über die bySlug-Methode abrufe? Soweit ich weiß, fungiert @NaturalId als Index und kann meiner Meinung nach dabei helfen, schneller auf den Datensatz zuzugreifen. Stimmt das? Könnten Sie die Vorteile erläutern?
Warum sollte ich @NaturalId verwenden? ⇐ Java
-
- Similar Topics
- Replies
- Views
- Last post