Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Mit Hilfe von Entity Listener kann man auf verschiedene Änderungen in einem Entity reagieren, zum Beispiel beim Speichern eines Entities, um diese Speicher-Aktion mit zu loggen. Mit Hilfe des Entity Listener Assistenten können Sie sich den benötigten Entity Listener generieren lassen und müssen anschließend nur noch den Code einfügen, der nach dem Auslösen des Events ausgeführt werden soll. Insgesamt werden 7 Events unterstützt. 

  • PrePersist - Wird ausgeführt, bevor das Entity persistiert wird. Wird auch bei der Persisitierung von Unter-Entities ausgeführt (Cascade).
  • PostPersist - Wird ausgeführt, nachdem das Entity persistiert wurde (INSERT). Wird auch bei der Persisitierung von Unter-Entities ausgeführt (Cascade).
  • PreRemove - Wird ausgeführt, bevor das Entity gelöscht wird. Wird auch bei der Löschung von Unter-Entities ausgeführt (Cascade).
  • PostRemove - Wird ausgeführt, nachdem das Entity gelöscht wurde. Wird auch bei der Löschung von Unter-Entities ausgeführt (Cascade).
  • PreUpdate - Wird ausgeführt, bevor das Entity upgedated wird.
  • PostUpdate - Wird ausgeführt, nachdem das Entity upgedated wurde.
  • PostLoad - Wird ausgeführt, nachdem das Entity geladen oder aktualisiert wurde.

  1. Klicken Sie im Entity-Editor auf Add Listener.
  2. Legen Sie bei Name eine Bezeichnung für den Entity Listener fest oder übernehmen Sie den Namensvorschlag, z.B. CarListener
  3. Legen Sie bei Callback methods fest, für welche Änderungen im Entity entsprechende Callback-Methoden generiert werden sollen, z.B. PrePersist.
    Image Added
  4. Klicken Sie auf Finish.
  5. Selektieren Sie im Projektmanagement Entities die generierte Klasse CarListener.java und fügen Sie bei der Callback-Methode den entsprechenden Aktions-Code ein.
Ergebnis:
  • CarListener.java - Der Assistent generiert im Projektmanagement > Entities die Klasse CarListener.java und setzt im Entity Car die Annotation @EntityListeners(CarListener.class).

    Code Block
    languagejava
    themeConfluence
    package com.company.examples.entities;
    
    import javax.persistence.PrePersist;
    
    public class CarListener {
    
    	@PrePersist
    	public void prePersist(Car car) {
       
        // Action before the entity is persisted
    
    	}
    }
Hinweis:
  • Generierter Code - Der Assistent funktioniert nur unidirektional. D.h., die generierten Methoden können nur im Code editiert oder entfernt werden.

Hibernate Dokumentation