Jakarta Persistence анотации

Entity клас в JPA е POJO, представляващ данни, които могат да бъдат запазени в базата данни. Един entity представлява таблица, съхранявана в база данни. Всеки ред в таблицата съответства на обект от този клас.

@Entity

Анотацията се добавя на ниво клас, като задава последният като entity. Entity класът трябва да разполага с дефолтен конструктор и поле, зададено като първичен ключ.

@Entity
public class Student {
    @Id
    private Long id;
    private String name;
    // getters and setters
}

@Table

Задава първичната таблица на анотирания entity.

В повечето случаи не желаем името на таблицата в базата от данни да съвпада с името на entity класа. При подобна ситуация, можем изрично да го посочим посредством анотацията @Table.

@Entity
@Table(name="Students")
public class Student {
    
    // fields, getters and setters
}

С помощта на опционалните елементи на анотацията indexes, uniqueConstraints, schema и catalog могат да се посочат индексите, ограниченията за уникалност, схемата и каталог на таблицата.

@Id

Всеки JPA обект трябва да има първичен ключ, който го идентифицира уникално. Анотацията @Id дефинира първичния ключ. Можем да генерираме идентификаторите по различни начини, които са посочени от анотацията @GeneratedValue. Можем да избираме от четири стратегии за генериране на идентификатор с елемента strategy. Стойността може да бъде AUTO, TABLE, SEQUENCE или IDENTITY.

@Column

Уточнява детайлите на колона в таблицата. Може да бъдат зададени елементи като name, length, nullable и unique.

@Transient

Понякога може да искаме да направим дадено поле преходно. Можем да постигнем това с анотацията @Transient. Тя указва, че полето няма да бъде запазено. Например можем да изчислим възрастта на ученик от датата на раждане. Така че нека да коментираме възрастта на полето с анотацията @Transient:

@CreationTimestamp

Hibernate анотация. Маркира полето като печат за времето на създаване на обекта.

@UpdateTimestamp

Hibernate анотация. Маркира полето като печат за времето на актуализиране на обекта.

@OneToMany

Указва асоциация едно към много (1:M).

Анотацията @OneToMany може да се използва в рамките на клас за вграждане, съдържащ се в entity клас, за да се укаже връзка с колекция от обекти. Ако връзката е двупосочна, елементът mappedBy трябва да се използва за указване на полето на връзката или свойството на entity, който е собственик на връзката.

Пример:

Клас Customer

Клас Order

@ManyToMany

Указва асоциация много към много (M:M).

Пример 1

Пример 2

Last updated

Was this helpful?