Adnotacja @Entity definiuje klasę encji i może jedynie wystąpić na poziomie klasy. Adnotacja składa się z pojedyńczego elementu name, który przypisuje nazwę encji do późniejszego odwołania się do niej w zapytaniach JPQL. Domyślna wartość elementu odpowiada niekwalifikowanej (skróconej) nazwie klasy encji.
W poniższym przykładzie element name jest nadmiarowy, ponieważ jej domyślna wartość odpowiada dokładnie podanej wartości.
import javax.persistence.Entity;
@Entity(name = "Osoba")
public class Osoba implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String imie;
}
Adnotacja @EntityListeners definiuje klasy nasłuchujące zdarzeń rozwojowych encji lub mapowanej nadklasy (ang. mapped superclass), która może dekorować klasę encji bądź mapowaną nadklasę.
Adnotacja @EntityListeners posiada pojedyńczy element o typie Class[].
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
@Entity(name = "Osoba")
@EntityListeners(OsobaListener.class)
public class Osoba implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private long numer;
}
Adnotacja @ExcludeSuperclassListeners wyłącza wykonanie klas nasłuchujących deklarowanych przez nadklasy encji dla udekorowanej encji lub mapowanej nadklasy oraz ich podklas. Innymi słowy wyłącza się wykonanie klas nasłuchujących zdefiniowanych wyżej w hierarchii dziedziczenia dla wszystkich klas poczynając od klasy, w której występuje adnotacja oraz jej potomków. Adnotacja może dekorować klasę i nie posiada elementów.
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.ExcludeSuperclassListeners;
@Entity
@ExcludeSuperclassListeners
@EntityListeners(PracownikSpecjalnyListener.class)
public class PracownikSpecjalny extends Osoba {
private static final long serialVersionUID = 1L;
}
Adnotacja @ExcludeDefaultListeners wyłącza wykonanie domyślnych klas nasłuchujących dla encji lub mapowanej nadklasy oraz ich potomków. Adnotacja może dekorować klasę i nie posiada elementów.
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.ExcludeDefaultListeners;
import javax.persistence.ExcludeSuperclassListeners;
@Entity
@ExcludeSuperclassListeners
@EntityListeners(PracownikSpecjalnyListener.class)
@ExcludeDefaultListeners
public class PracownikSpecjalny extends Osoba {
private static final long serialVersionUID = 1L;
}
Adnotacje
- @PrePersist
- @PostPersist
- @PreRemove
- @PostRemove
- @PreUpdate
- @PostUpdate
- @PostLoad
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
@Entity(name = "Osoba")
@EntityListeners(OsobaListener.class)
public class Osoba implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private long numer;
@PostPersist
protected void nowaOsobaUtworzona() {
logger.info("Utworzono osobę o identyfikatorze " + numer);
}
}
lub dla klasy nasłuchującej:
package pl.jaceklaskowski.jpa.entity.listeners;
import java.util.logging.Logger;
import javax.persistence.PostPersist;
import pl.jaceklaskowski.jpa.entity.Osoba;
public class OsobaListener {
private static final Logger logger = Logger.getLogger(OsobaListener.class.getName());
@PostPersist
protected void nowaOsobaUtworzona(Osoba osoba) {
logger.info("Utworzono osobę o identyfikatorze " + osoba.getNumer());
}
}
Brak komentarzy:
Prześlij komentarz