openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Dick <michael.d.d...@gmail.com>
Subject Re: how to use openjpa event listener ?
Date Tue, 11 Aug 2009 16:06:22 GMT
Hi Illhan,

The audit example from the persistence blog uses a @PostUpdate listener to
do the auditing. You can specify a default set of listeners for an entire
persistence unit in an xml mapping file. For example :

persistence.xml :

<persistence-unit name="auditable-pu">
     <mapping-file>orm.xml</mapping-file>
</persistence-unit>

orm/xml :
<persistence-unit-metadata>
   <persistence-unit-defaults>
       <entity-listeners>
            <entity-listener class="foo.bar.Auditor">
                 <pre-persist method-name="prePersist" />
                 <post-persist method-name="postPersist" />
                 <pre-remove method-name="preRemove" />
                 <post-remove method-name="postRemove" />
                 <pre-update method-name="preUpdate" />
                 <post-update method-name="postUpdate" />
                 <post-load method-name="postLoad" />
            </entity-listener>
        </entity-listeners>
   </persistence-unit-defaults>
</persistence-unit-metadata>


Foo.bar.Auditor.postUpdate() will operate on all the entities in your
persistence unit - just like the annotation example in Pinaki's blog post.

Does that sound like what you want?

-mike

On Tue, Aug 11, 2009 at 10:19 AM, illhan <quzheng911@yahoo.com.cn> wrote:

>
> hi Rick,
> Because of the audit logging,I used the openJPA LifeCycleListener(maybe
> other openjpa listerners) for audit logging.
> I have try to record the audit logging by JPA lifecycle callbacks,but in
> the
> callbacks method's I can not get the old state,I only get the new method.
> The document
> http://webspherepersistence.blogspot.com/2009/01/auditing-with-openjpa.html
> http://webspherepersistence.blogspot.com/2009/01/auditing-with-openjpa.html
> shows one method to record audit logging,but  the audit method must be
> added
> in my all entites ,it is too complex for developers.
> in my opinion,the openJPA LifeCycleListener maybe the best way to reduse
> the
> developers workload,if it can be used here.I can use event descriptor in
> eclipselink(toplink),I only to register the event descriptor in
> persistence.xml.So I would like to found the similar way in openJPA
> environment.
>
> Thanks Rick.
> illhan
>
> Michael Dick wrote:
> >
> > Hi Illhan,
> > The method you want to use is part of OpenJPA's SPI layer, and isn't
> > intended to be used by most applications. As a result the interface may
> be
> > a
> > bit more fluid than our 'normal' API methods.
> >
> > Could you elaborate on why you want to add a LifeCycleListener? We might
> > be
> > able to suggest an alternative that accomplishes the same goal..
> >
> > Best Regards,
> > -mike
> >
> > On Mon, Aug 10, 2009 at 9:05 PM, illhan <quzheng911@yahoo.com.cn> wrote:
> >
> >>
> >> hi Rick,
> >> You means the JPA lifecycle Callbacks,But I want to know the openjpa's
> >> listener,in package org.apache.openjpa.event,the interface
> >> LifecycleListener
> >> and the class LifecycleEvents.
> >> From the javadoc,the LifecycleListener  can be registered by the method
> >> addLifecycleListener(Object listener, Class... classes) from class
> >> org.apache.openjpa.persistence.EntityManagerImpl,but in JEE container
> the
> >> EntityManager is inited by the container itself.How can I registere the
> >> LifecycleListener and process the LifecycleEvents.I have reviewed the
> >> openjpa user's guide,but no part can be found there.
> >> Thanks Rick.
> >> illhan
> >>
> >> Rick Curtis wrote:
> >> >
> >> > Illhan -
> >> >
> >> > Did you read the section in the user manual detailing the usage of
> >> > Lifecycle Callbacks [1]?
> >> >
> >> > -Rick
> >> >
> >> > [1]
> >>
> http://openjpa.apache.org/builds/latest/docs/manual/manual.html#jpa_overview_pc_callbacks
> >> >
> >> >
> >> > illhan wrote:
> >> >>
> >> >> hi Rick,
> >> >> The EntityManager and the EntityManagerFactory are initializated by
> >> the
> >> >> JEE contianer.I think the LifecycleListener could be set in
> >> >> persistent.xml,not only used by java code.
> >> >> Thanks Rick.
> >> >>
> >> >> illhan
> >> >>
> >> >> Rick Curtis wrote:
> >> >>>
> >> >>> Illhan -
> >> >>> In your application initialization I believe you could do something
> >> like
> >> >>> this to get a reference to the EntityManagerFactory....
> >> >>>
> >> >>>             OpenJPAEntityManager oem = OpenJPAPersistence.cast(em);
> >> >>>             OpenJPAEntityManagerFactory oemf =
> >> >>> OpenJPAPersistence.cast(oem.getEntityManagerFactory());
> >> >>>
> >> >>> - Rick
> >> >>>
> >> >>> illhan wrote:
> >> >>>>
> >> >>>> In the javadoc there are many event and listener.I want to
use the
> >> >>>> event and the listener in jee enviroment,the emf.add**Listener()
> >> method
> >> >>>> can't not called because in jee enviroment the
> entitymanagerfacetory
> >> is
> >> >>>> created by jee contianer.i only use ejb3 injection in my session
> >> bean
> >> >>>> use   @PersistenceContext
> >> >>>>     private EntityManager em;
> >> >>>> so i don't know how to register the Listener(such as
> >> LifecycleListener)
> >> >>>> in JEE enviroment.
> >> >>>>
> >> >>>> illhan
> >> >>>>
> >> >>>
> >> >>>
> >> >>
> >> >>
> >> >
> >> >
> >>
> >> --
> >> View this message in context:
> >>
> http://n2.nabble.com/how-to-use-openjpa-event-listener---tp3397042p3421303.html
> >> Sent from the OpenJPA Users mailing list archive at Nabble.com.
> >>
> >
> >
>
> --
> View this message in context:
> http://n2.nabble.com/how-to-use-openjpa-event-listener---tp3397042p3424516.html
> Sent from the OpenJPA Users mailing list archive at Nabble.com.
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message