Hibernate Entity Manager needs to enhance Hibernate core to implements all the EJB3 semantics. It does that through the event listener system of Hibernate. Be careful when you use the event system yourself, you might override some of the EJB3 semantics. A safe way is to add your event listeners to the list given below.
| Event | Listeners |
|---|---|
| flush | org.hibernate.ejb.event.EJB3FlushEventListener |
| auto-flush | org.hibernate.ejb.event.EJB3AutoFlushEventListener |
| delete | org.hibernate.ejb.event.EJB3DeleteEventListener |
| flush-entity | org.hibernate.ejb.event.EJB3FlushEntityEventListener |
| merge | org.hibernate.ejb.event.EJB3MergeEventListener |
| create | org.hibernate.ejb.event.EJB3PersistEventListener |
| create-onflush | org.hibernate.ejb.event.EJB3PersistOnFlushEventListener |
| save | org.hibernate.ejb.event.EJB3SaveEventListener |
| save-update | org.hibernate.ejb.event.EJB3SaveOrUpdateEventListener |
| pre-insert | org.hibernate.secure.JACCPreInsertEventListener, org.hibernate.valitator.event.ValidateEventListener |
| pre-insert | org.hibernate.secure.JACCPreUpdateEventListener, org.hibernate.valitator.event.ValidateEventListener |
| pre-delete | org.hibernate.secure.JACCPreDeleteEventListener |
| pre-load | org.hibernate.secure.JACCPreLoadEventListener |
| post-delete | org.hibernate.ejb.event.EJB3PostDeleteEventListener |
| post-insert | org.hibernate.ejb.event.EJB3PostInsertEventListener |
| post-load | org.hibernate.ejb.event.EJB3PostLoadEventListener |
| post-update | org.hibernate.ejb.event.EJB3PostUpdateEventListener |
Table 2.2. Hibernate Entity Manager default event listeners
Note that the JACC*EventListeners are removed if the security is not enabled.
You can configure the event listeners either through the properties (see Configuration and bootstrapping) or through the ejb3configuration.getEventListeners() API.