Entity клас в JPA е POJO, представляващ данни, които могат да бъдат запазени в базата данни. Един entity представлява таблица, съхранявана в база данни. Всеки ред в таблицата съответства на обект от този клас.
@Entity
Анотацията се добавя на ниво клас, като задава последният като entity. Entity класът трябва да разполага с дефолтен конструктор и поле, зададено като първичен ключ.
@EntitypublicclassStudent { @IdprivateLong id;privateString name;// getters and setters}
@Table
Задава първичната таблица на анотирания entity.
В повечето случаи не желаем името на таблицата в базата от данни да съвпада с името на entity класа. При подобна ситуация, можем изрично да го посочим посредством анотацията @Table.
@Entity@Table(name="Students")publicclassStudent {// fields, getters and setters}
С помощта на опционалните елементи на анотацията indexes, uniqueConstraints, schema и catalog могат да се посочат индексите, ограниченията за уникалност, схемата и каталог на таблицата.
@Id
Всеки JPA обект трябва да има първичен ключ, който го идентифицира уникално. Анотацията @Id дефинира първичния ключ. Можем да генерираме идентификаторите по различни начини, които са посочени от анотацията @GeneratedValue. Можем да избираме от четири стратегии за генериране на идентификатор с елемента strategy. Стойността може да бъде AUTO, TABLE, SEQUENCE или IDENTITY.
@EntitypublicclassStudent { @Id @GeneratedValue(strategy=GenerationType.IDENTITY)privateLong id;privateString name;// getters and setters}
@Column
Уточнява детайлите на колона в таблицата. Може да бъдат зададени елементи като name, length, nullable и unique.
@Entity@Table(name="Students")publicclassStudent { @Id @GeneratedValue(strategy=GenerationType.IDENTITY)privateLong id; @Column(name="student_name", length=50, nullable=false, unique=false)privateString name;// other fields, getters and setters}
@Transient
Понякога може да искаме да направим дадено поле преходно. Можем да постигнем това с анотацията @Transient. Тя указва, че полето няма да бъде запазено. Например можем да изчислим възрастта на ученик от датата на раждане. Така че нека да коментираме възрастта на полето с анотацията @Transient:
@Entity@Table(name="Students")publicclassStudent { @Id @GeneratedValue(strategy=GenerationType.AUTO)privateLong id; @Column(name="student_name", length=50, nullable=false)privateString name; @TransientprivateInteger age;// other fields, getters and setters}
@CreationTimestamp
Hibernate анотация. Маркира полето като печат за времето на създаване на обекта.
@EntitypublicclassBook {//other fields @CreationTimestampprivateInstant createdOn;// standard setters and getters}
@UpdateTimestamp
Hibernate анотация. Маркира полето като печат за времето на актуализиране на обекта.
@EntitypublicclassBook {//other fields @UpdateTimestampprivateInstant lastUpdatedOn;// standard setters and getters}
@OneToMany
Указва асоциация едно към много (1:M).
Анотацията @OneToMany може да се използва в рамките на клас за вграждане, съдържащ се в entity клас, за да се укаже връзка с колекция от обекти. Ако връзката е двупосочна, елементът mappedBy трябва да се използва за указване на полето на връзката или свойството на entity, който е собственик на връзката.