Warum sollte ich @NaturalId verwenden?Java

Java-Forum
Anonymous
 Warum sollte ich @NaturalId verwenden?

Post by Anonymous »

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?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post