directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Karasulu" <akaras...@apache.org>
Subject Re: [LDAP DAS] Efficient Updating of Persisted Objects
Date Tue, 27 Mar 2007 19:46:53 GMT
Yeah I think it will be very similar to what you have done or what I have
tried to do.

Alex


On 3/27/07, David Jencks <david_jencks@yahoo.com> wrote:
>
>
>  On Mar 27, 2007, at 11:28 AM, Alex Karasulu wrote:
>
> Ole,
>
> On 3/21/07, Ole Ersoy <ole.ersoy@gmail.com> wrote:
>
> > Hey Guys,
> >
> > Just wanted to see if anyone had any thoughts on handling updates
> > to Java beans (Service Data Objects - but basically the same thing)
> > persisted with ADS.
> >
> > With Service Data Objects we create a datagraph that is then
> > disconnected
> > from it's persistence source and we can mutate it.  Then later we want
> > to
> > persist the graph.  Each object in the graph has a change summary, that
> > stores the fields that were updated.
>
>
> This change summary is very interesting.  I had experimented with
> something
> similar which David Jencks did not like too much.  Basically the modifier
> pattern
> was being used to track modifications to attributes of entities.  It was
> tracking
> the set of modify add, remove, and replace operations to perform on each
> attribute.
>
>
>
> What I didn't like was that you were keeping track of the modifications
> outside the POJO-like data object itself in (IMO) very hard to use helper
> objects, and you didn't write a framework.  I took essentially the same idea
> and came up with something pretty similar to jpa/jdo, where you have things
> that look like POJOs to the outside world, but inside they keep track of how
> they relate to what's in the persistent store.  The main differences to the
> ideas of jpa are that I don't support disconnection and you have to do the
> enhancement yourself.  In a non-locking not-transactional environment I'm
> not sure exactly what disconnection means so this might not really be
> accurate.  IIRC this stuff is all in the sandbox/triplesec-jacc2 branch.
>
>
> In the past I've tried to describe the kinds of ldap <> object mappings I
> need and support in my framework but haven't understood from Ole whether the
> DAS will offer similar capabilities.
>
>
> thanks
> david jencks
>
>
>
>
>
>
> > This makes it possible to only update objects that have been changed,
> > and
> > we only need to update the fields that were changed.
>
>
> Exactly this is what I was doing in this one admin API I had in triplesec.
>
>
>
> > However, I think the DirContext will overwrite the entire
> > object during the bind operation, rather than updating specific fields
> > on the object.
>
>
> Hmmm with heirarchical services in JNDI you should not be using bind().
> You
> should be using the createSubcontext() and modifyAttributes() methods
> instead.  You
> might want to go through the JNDI tutorial for LDAP just to get a good
> feel for how to
> work with non-flat namespaces using JNDI.  Namely with LDAP you don't need
> to
> rebind the object with a modification to an attribute.  This is what the
> modify
> operations are for.
>
> http://bsd.cs.cofc.edu/Java/Javadocs1.5/api/javax/naming/directory/DirContext.html#modifyAttributes(javax.naming.Name
> , int, javax.naming.directory.Attributes)
>
>
>
> > Initially I  was thinking that the object's attributes (primitive
> > properties - not references to other objects)
> > would be serialized and made into directory attributes.  But I think a
> > LDAP ObjectClass schema that corresponds to the
> > object's class (The class of the object we are persisting) would have to
> > be generated and stored along with the instance.
> >
> > This might lead to performance improvments, if doable...?
> >
> > Thoughts?
>
>
> Hmmm I think some of your premisses in this question may be due to
> considering the use
> of bind() instead of using modifyAttributes() and createSubcontext().  If
> you use these methods
> I think there is no further preformance issue to consider.  WDYT?
>
> Alex
>
>
>
>
>

Mime
View raw message