Entity

Базовый Java
≈ 2 мин чтения

Entity — объект с устойчивой идентичностью

Entity — Java-класс, экземпляры которого JPA может хранить в базе данных и восстанавливать обратно. Обычно такой класс соответствует таблице, а его поля — столбцам, хотя отображение можно настраивать.

@Entity
public class User {

    @Id
    private Long id;

    private String name;
}

Аннотация @Entity говорит provider, что класс участвует в persistence-модели. Поле с @Id задаёт первичный ключ — значение, по которому экземпляр Entity однозначно идентифицируется.

Entity остаётся обычным Java-объектом

У Entity могут быть методы, конструкторы и обычная бизнес-логика. Но JPA накладывает несколько требований на её устройство: класс должен быть доступен provider, а состояние, которое нужно хранить, должно быть описано через поля или свойства. Обычно Entity также имеет конструктор без аргументов хотя бы с protected-доступом.

protected User() {
}

public User(Long id, String name) {
    this.id = id;
    this.name = name;
}

Имена таблиц и столбцов можно настроить

@Entity
@Table(name = "users")
public class User {

    @Id
    @Column(name = "user_id")
    private Long id;
}

Если соглашения по умолчанию подходят проекту, каждое имя указывать не обязательно. Явное отображение полезно, когда структура базы уже существует или её имена отличаются от Java-модели.