Почему мне следует использовать @NaturalId?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему мне следует использовать @NaturalId?

Сообщение Anonymous »

Когда я ищу @NaturalId и пытаюсь понять, в чем преимущества его использования. Я читаю несколько статей, подобных этой статье.

Код: Выделить всё

@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);
}
}
А при получении записи используется следующий подход:

Код: Выделить всё

String slug = "high-performance-java-persistence";

Post post = entityManager.unwrap(Session.class)
.bySimpleNaturalId(Post.class)
.load(slug);
Мне интересно, что значит удалить @NaturalId из поля slug и получить запись с помощью метода bySlug? Насколько я понимаю, @NaturalId действует как индекс и, я думаю, может помочь быстрее получить доступ к записи. Это правда? Не могли бы вы объяснить преимущества этого?

Подробнее здесь: https://stackoverflow.com/questions/732 ... -naturalid
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»