openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bengt Rodehav <be...@rodehav.com>
Subject Re: Audit log with OpenJPA
Date Thu, 07 Jul 2011 16:49:46 GMT
I actually use the same approach as Hades for createdBy, updatedBy,
createdWhen and updatedWhen. In addition to this basic audit logging I also
want to log all historical versions together with information about who
updated the object.

I've read a little bit about Envers. I didn't want to bring it up since this
is an OpenJPA mailing list. It does look interesting but I think it requires
Hibernate which I do not intend to go back to. (I'm actually moving away
from Hibernate). Also, I'm a bit hesitant to store "copies" of my rows in
special audit tables since it also means database migration of those tables.
I think serializing the audit log entries and putting them in one column is
a better approach from a maintenance perspective.

But it would be nice if OpenJPA would provide a callback or some mechanism
(even if it's not standard JPA) that would allow further updates/inserts in
a callback.

Are there any such plans?

/Bengt

2011/7/7 Andrew Thompson <at2582@columbia.edu>

> You might take a look at how hades
> (
> http://hades.synyx.org/static/2.x/site/org.synyx.hades/reference/html/auditing.html)
> does something close to what you're describing.  Or
> http://www.jboss.org/envers
>
> -Andy
>
> On Thu, 2011-07-07 at 15:35 +0100, David Goodenough wrote:
> > On Thursday 07 Jul 2011, Bengt Rodehav wrote:
> > > I'm using OpenJPA for persistence and would like to audit log any
> changes
> > > made to my entities. I serialize the objects to JSON (with Gson) and
> store
> > > them in a separate table in the database. Since the audit log needs to
> have
> > > the correct id's, the audit logging must take place after the entity
> has
> > > been persisted.
> > >
> > > I was hoping I could use the @PostPersist and @PostUpdate life cycle
> > > callbacks for this. I do seem to have the right information available
> and
> > > the serialization works fine but I don't know how I can persist my
> audit
> > > log entries at this point. From what I've read, I'm not allowed to use
> the
> > > entity manager in a "Post" lifecycle callback which of course makes
> this
> > > hard.
> > >
> > > What do you recommend? Is there a good place in JPA/OpenJPA where I
> > > automatically can trigger the storing of an audit log entry as
> described
> > > above. Of course I can move this logic up from the persistence layer to
> a
> > > place where I can first have the entity manager persist my entity and
> then
> > > explicitly call another service to do the audit log. However, this is a
> > > pretty general mechanism that I would like to have automatic support
> for in
> > > my framework which is why I would like to have it pushed down into the
> > > persistence layer.
> > >
> > > Any ideas?
> > >
> > > /Bengt
> > You could of course cheat.
> >
> > While you can not access the entiry manager, there is nothing to stop you
> > using JDBC.  It would probably not be a good idea to access a table that
> > JPA is using, but if this audit trail is write only for this app and only
> > read elsewhere that would solve the problem.
> >
> > David
>
>

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