← Назад к вопросам

Что такое entity?

1.0 Junior🔥 201 комментариев
#ORM и Hibernate

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

# Что такое Entity?

Entity (Сущность) — это Java-класс, который представляет таблицу в реляционной базе данных. Каждый экземпляр Entity соответствует одной строке в таблице, а поля класса — столбцам таблицы.

В контексте JPA/Hibernate

Entity — это основной строительный блок для работы с БД в JPA. Он аннотируется @Entity и используется для маппирования объектов на таблицы БД.

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(name = "name", nullable = false)
    private String name;
    
    @Column(name = "email", unique = true)
    private String email;
    
    @Enumerated(EnumType.STRING)
    private Role role;
    
    @CreationTimestamp
    private LocalDateTime createdAt;
}

Ключевые аннотации

@Entity — отмечает класс как Entity для маппирования на БД.

@Table — указывает имя таблицы, если оно отличается от имени класса.

@Id — определяет первичный ключ.

@GeneratedValue — задаёт стратегию генерации ID (IDENTITY, SEQUENCE, TABLE, AUTO).

@Column — настраивает маппирование столбца (name, nullable, unique, length).

@Enumerated — маппирует enum в БД (STRING или ORDINAL).

@CreationTimestamp / @UpdateTimestamp — автоматически устанавливают время создания/обновления.

Типы отношений

@OneToOne — один-к-одному

@OneToOne
private Address address;

@OneToMany — один-ко-многим

@OneToMany(mappedBy = "user")
private List<Order> orders;

@ManyToOne — много-к-одному

@ManyToOne
private User user;

@ManyToMany — много-ко-многим

@ManyToMany
@JoinTable(name = "user_roles",
    joinColumns = @JoinColumn(name = "user_id"),
    inverseJoinColumns = @JoinColumn(name = "role_id"))
private List<Role> roles;

Lifecycle Entity

New (Transient) — объект создан, но не сохранён в БД.

Managed (Persistent) — объект управляется persistence context, его изменения отслеживаются.

Detached — объект больше не управляется (сессия закрыта).

Removed — объект помечен для удаления из БД.

Правила для Entity

  1. Должен иметь конструктор без аргументов (может быть protected)
  2. Не должен быть final классом
  3. Поля не должны быть final
  4. Должен реализовать Serializable (рекомендуется)
  5. Должен иметь @Id аннотацию

Spring Data Repository

Entity используется с Repository для CRUD операций:

public interface UserRepository extends JpaRepository<User, Long> {
    User findByEmail(String email);
}

// Использование
User user = new User();
user.setName("John");
userRepository.save(user);  // Сохранение
User found = userRepository.findById(1L);
List<User> all = userRepository.findAll();

Entity — основная единица работы с данными в Java-приложениях, обеспечивающая прозрачное маппирование между объектной и реляционной моделями данных.

Что такое entity? | PrepBro