Аннотации JPA: @Embeddable, @Embedded, @ElementCollection, @Inheritance, @Cacheable, @Lock, @EntityListeners, @SQLInsert, @SQLUpdate, @SQLDelete
1. @Embeddable и @Embedded
Аннотация @Embeddable обозначает класс, который будет встраиваться в другие сущности, а @Embedded — указывает, что поле встраивает такой класс.
2. @ElementCollection
Используется для хранения коллекций простых типов или встраиваемых объектов.
3. @Inheritance
Настраивает стратегию наследования для сущностей.
4. @Cacheable
Обозначает, что сущность может быть закеширована.
5. @Lock
Используется для управления блокировками данных.
6. @EntityListeners
Позволяет подключать слушатели для отслеживания событий сущности.
7. @SQLInsert, @SQLUpdate, @SQLDelete
Эти аннотации позволяют задать кастомные SQL-запросы для операций вставки, обновления и удаления.
#Java #Training #Spring #Embeddable, #Embedded, #ElementCollection, #Inheritance, #Cacheable, #Lock, #EntityListeners, #SQLInsert, #SQLUpdate, #SQLDelete
1. @Embeddable и @Embedded
Аннотация @Embeddable обозначает класс, который будет встраиваться в другие сущности, а @Embedded — указывает, что поле встраивает такой класс.
@Embeddable
public class Address {
private String street;
private String city;
}
@Entity
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Embedded
private Address address;
}
2. @ElementCollection
Используется для хранения коллекций простых типов или встраиваемых объектов.
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ElementCollection
private List<String> tags;
}
3. @Inheritance
Настраивает стратегию наследования для сущностей.
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Vehicle {
@Id
private Long id;
}
@Entity
public class Car extends Vehicle {
private int seatingCapacity;
}
4. @Cacheable
Обозначает, что сущность может быть закеширована.
@Entity
@Cacheable
public class Product {
@Id
private Long id;
private String name;
}
5. @Lock
Используется для управления блокировками данных.
@Lock(LockModeType.PESSIMISTIC_WRITE)
@Query("SELECT u FROM User u WHERE u.id = :id")
User findForUpdate(@Param("id") Long id);
6. @EntityListeners
Позволяет подключать слушатели для отслеживания событий сущности.
@Entity
@EntityListeners(AuditListener.class)
public class Order {
@Id
private Long id;
}
7. @SQLInsert, @SQLUpdate, @SQLDelete
Эти аннотации позволяют задать кастомные SQL-запросы для операций вставки, обновления и удаления.
@SQLInsert(sql = "INSERT INTO user_audit (id, username) VALUES (?, ?)")
@SQLDelete(sql = "DELETE FROM user_audit WHERE id = ?")
@Entity
public class UserAudit {
@Id
private Long id;
}
#Java #Training #Spring #Embeddable, #Embedded, #ElementCollection, #Inheritance, #Cacheable, #Lock, #EntityListeners, #SQLInsert, #SQLUpdate, #SQLDelete