Deklarieren Hibernate-Ereignis-Listener in einer JPA-Umgebung
Hy Leute,
Ich bin an einem Projekt arbeitet, entwickelt in Java-EE-5-Umgebung. Ich möchte wissen, wie kann ich erklären, ein Hibernate-Ereignis-listener, so dass ich informiert werden können, wenn CRUD-operation durchgeführt werden.
Habe ich gelesen, dass ich erklären muß, in der Hibernate-Konfiguration-Datei *cfg.xml
so etwas wie dieses:
<hibernate-configuration>
<session-factory>
...
<event type="load">
<listener class="com.eg.MyLoadListener"/>
<listener class="org.hibernate.event.def.DefaultLoadEventListener"/>
</event>
</session-factory>
</hibernate-configuration>
Das problem ist ich habe keine solche Datei in das Projekt. Wir verwenden JPA (mit Hibernate als die zugrunde liegende Implementierung). Wissen Sie, wenn ich brauche, um zu erstellen, dass bestimmte Datei? Wenn ja, wo sollte ich es sagen?
Vielen Dank im Voraus.
- hi, hast du die Antwort?
InformationsquelleAutor user284400 | 2010-03-02
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem persistence.xml:
In der Hibernate EntityManager docs Blick auf "Tabelle 2.1. Hibernate Entity Manager spezifische Eigenschaften, die" für alle geltenden Eigenschaften.
Ich nehme an, Sie sind mit Anmerkungen? Wenn dem so ist, können Sie die
@EntityListeners
Anmerkungen zu machen, etwa so:Entity-listener-Klasse könnte wie folgt Aussehen:
Gibt es verschiedene Anmerkungen zur Verfügung zu fangen verschiedene Veranstaltungen, wie
@PrePersist
,@PreUpdate
,@PostLoad
, etc.Beachten Sie, dass Sie auch diese mit Annotationen zu den callback-Methoden. Entweder eingebettet in der Person selbst oder in einer separaten Klasse, die so genannte entity-listener. Hier ist ein Ausschnitt stammt aus der Dokumentation:
Ich denke, Sie können auch festlegen, dass in der XML-config. Aber Anmerkungen sind bequemer meiner Meinung nach.
Wie es scheint, können Sie die üblichen
hibnerate.cfg.xml
als Eigenschafthibernate.ejb.cfgfile
.Sehen diese post oder diese ein.
Hinweis, dass ich nie persönlich.