-
1. Re: Some listeners not called...
atodorov Oct 24, 2005 8:21 AM (in response to atodorov)I forgot to mention that I'm using EJB 3.
-
2. Re: Some listeners not called...
evrim Oct 24, 2005 10:48 PM (in response to atodorov)Use @EntityListener() instead. Search for documentation inside Hibernate EJB3 Annotation documentation.
-
3. Hibernate event listeners
jana01 Oct 25, 2005 3:03 AM (in response to atodorov)Hi!
Is is possible at all to use Hibernate event listeners with EJB3? -
4. Re: Some listeners not called...
jana01 Oct 25, 2005 7:18 AM (in response to atodorov)It seems so far listeners cannot be overridden. I see the following in the org.hibernate.ejb.EventListenerConfigurator:
public void setProperties(Properties properties) { this.properties = properties; if ( properties.containsKey( HibernatePersistence.JACC_ENABLED ) ) { isSecurity = true; } //TODO check whether there is an event listener overriding } public void configure() { //some initial work ValidateEventListener validateEventListener = null; if (isValidator) { validateEventListener = new ValidateEventListener(); } //handle callbacks for all classes //TODO exclude pure hbm file classes? EntityCallbackHandler callbackHandler = new EntityCallbackHandler(); configuration.buildMappings(); //needed to get all the classes Iterator classes = configuration.getClassMappings(); while ( classes.hasNext() ) { PersistentClass clazz = (PersistentClass) classes.next(); callbackHandler.add( clazz.getMappedClass() ); } EventListeners listenerConfig = configuration.getEventListeners(); //Action event //EJB3-specific ops listeners listenerConfig.setFlushEventListeners( new FlushEventListener[] { EJB3FlushEventListener.INSTANCE } ); //EJB3-specific ops listeners listenerConfig.setAutoFlushEventListeners( new AutoFlushEventListener[] { EJB3AutoFlushEventListener.INSTANCE } ); listenerConfig.setDeleteEventListeners( new DeleteEventListener[] { new EJB3DeleteEventListener( callbackHandler ) } ); listenerConfig.setFlushEntityEventListeners( new FlushEntityEventListener[] { new EJB3FlushEntityEventListener( callbackHandler ) } ); listenerConfig.setMergeEventListeners( new MergeEventListener[] { new EJB3MergeEventListener( callbackHandler ) } ); listenerConfig.setPersistEventListeners( new PersistEventListener[] { new EJB3PersistEventListener( callbackHandler ) } ); listenerConfig.setSaveEventListeners( new SaveOrUpdateEventListener[] { new EJB3SaveEventListener( callbackHandler ) } ); listenerConfig.setSaveOrUpdateEventListeners( new SaveOrUpdateEventListener[] { new EJB3SaveOrUpdateEventListener( callbackHandler ) } ); ................
-
5. Re: Some listeners not called...
evrim Oct 26, 2005 11:15 AM (in response to atodorov)I'm not too much experienced with hibernate but if you'r implementing ejb3, you shouldn't bound yourself with hibernate, you may want to try other ejb3 implementations in future(JDO, Oracle Toplink etc). I feel you'r trying to avoid re-implementing your listeners but, it seems it's the best choice here to re-implement them with @EntityListener().
evrim. -
6. Re: Some listeners not called...
jana01 Oct 27, 2005 3:03 AM (in response to atodorov)evrim,
You are right on this. But ejb3 is not official anyway at this time. Our project is planned to be rather long so I hope that at some point ejb3 would provide some more convenient mechanisms to implement audit functionality in which case we will of course consider pure ejb3 approach. -
7. Re: Some listeners not called...
evrim Oct 27, 2005 1:21 PM (in response to atodorov)Hm, i'm having the same problem, ejb3 don't have instance based security. Hibernate have some type of Class level security(org.hibernate.secure.JACCPreLoadEventListener) but its not sufficient. I've tried to implement acegi-like acl's but failed most of the cases like read permissioning. EJB3 have only PostLoad conditional, and doesn't have PreLoad. :(
-
8. Re: Hibernate event listeners
epbernard Oct 28, 2005 4:43 PM (in response to atodorov)"Jana" wrote:
Hi!
Is is possible at all to use Hibernate event listeners with EJB3?
Not yet but I plan to open this soon