Filtering data - Listening to and intercepting events - JPA event listeners and callbacks

4 belangrijke vragen over Filtering data - Listening to and intercepting events - JPA event listeners and callbacks

Hoe schakelen we een entity listener klasse in ?

@Entity
@EntityListeners(
PersistEntityListener.class
)
public class Item {
// . . .

}
De annotatie @EntityListeners accepteert een array van listener-klassen als we meerdere interceptors hebben. Als meerdere luisteraars callback-methoden definiëren voor hetzelfde gebeurtenis, roept Hibernate de luisteraars aan in de opgegeven volgorde.

Geef nog een methode om een entity listener in te schakelen.


We hoeven geen aparte entity listener-klasse te schrijven om de levenscyclusgebeurtenissen te onderscheppen.

@Entity
@Table(name = "USERS")
public class User {
@PostPersist
public void logMessage(){
User currentUser = CurrentUser.INSTANCE.get();
Log log = Log.INSTANCE;
log.save(
"Entity instance persisted by "
+ currentUser.getUsername()
+ ": "
+ this
);
}
// . . .
}

Merk op dat callback-methoden op een entiteitsklasse geen argumenten hebben: de "huidige" entiteit die betrokken is bij de toestandsveranderingen is 'this'. Duplicaat-callbacks voor dezelfde gebeurtenis zijn niet toegestaan in één enkele klasse, maar we kunnen dezelfde gebeurtenis onderscheppen met callback-methoden in verschillende luisterklassen of in een luisterklasse en een entiteitsklasse.

Hoe schakel je een overerfde entity listener uit voor een bepaalde subklasse ?

Annoteer de entiteit met @ExcludeSuperclassListeners
  • Hogere cijfers + sneller leren
  • Niets twee keer studeren
  • 100% zeker alles onthouden
Ontdek Study Smart

Hoe schakel je de standaard entitity listeners uit ?

@ExcludeDefaultListeners

De vragen op deze pagina komen uit de samenvatting van het volgende studiemateriaal:

  • Een unieke studie- en oefentool
  • Nooit meer iets twee keer studeren
  • Haal de cijfers waar je op hoopt
  • 100% zeker alles onthouden
Onthoud sneller, leer beter. Wetenschappelijk bewezen.
Trustpilot-logo