db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bin Sun <sun2...@yahoo.com>
Subject Re: User demand and Issue 150. [was Re: Issue 150: Consistency requirements for relationships with mapped-by]
Date Thu, 29 Dec 2005 03:38:07 GMT
Hi, David!

    SCOCollection.add() may be implemented with lazy
feature, and you're right at this point. However,
convinience is also a concern for me. Since I had
noted the bi-directional attribute for a collection in
the metadata, I should be allowed to modify one side
of them and let the impl. do the last. As I said.

--- David Bullock <db@dawnbreaks.net> wrote:

> Bin Sun wrote:
> 
> >Hi, David!
> >
> >    I'd like to share some of my ideas. We are
> >developing heavy stressed web applications based on
> >JDO. In each bi-di-relation, if the coder has to 
> >assign both sides, the other side(usually a
> >collection) has to be loaded into memory and cause
> >much performance penalty. It's more efficient to
> leave
> >this synchronization task to the implementation.
> >  
> >
> 
> Hi Bin,
> 
> Thanks for your sharing your experiences.  This is
> what I was wanting - 
> a justification from a real live user!
> 
> But I have a quibble with your statement: "if the
> coder has to assign 
> both sides, the other side (usually a collection)
> has to be loaded into 
> memory".
> 
> So you're saying that if I have persistent objects
> just so:
> 
> public class Invoice {
>    private Set<Line> lines;
>    public void addLine(Line line) {
>        this.lines.add(line);
>    }
> }
> 
> public class Line {
>    private Invoice invoice;
>    public void setInvoice(Invoice invoice) {
>      this.invoice = invoice;
>    }
> }
> 
> and I do this:
> 
> static {
>   Invoice invoice =
> Util.getPersistentInvoice("1234");
>   Line line = new Line();
> 
>   line.setInvoice(invoice):
>   invoice.addLine(line);   /*expensive?*/
> }
> 
> that the JDO impl necessarily fetches the entire
> contents of the 
> Invoice.lines collection?  And *because* of this
> problem, you as a user 
> wish to avoid the invoice.addLine(line) call?
> 
> I guess there might be JDO impl's out there which do
> that.  But I'd 
> rather pay money for a good one [1] which allowed me
> to control the 
> fetch policy.  There's absolutely no reason why the
> JDO impl needs to go 
> to the database to let me invoke .add() on a SCO
> collection, until it 
> needs to flush and do an INSERT.
> 
> Hence there is no performance hit when setting both
> sides 'manually'.
> 
> Please hasten to correct me if I've misunderstood
> why the performance 
> hit takes place.
> 
> cheers,
> David.
> 
> 
> [1] Not that there are many takers for my money
> anymore since JSR 220 
> 'took over' persistence.
> 



	
		
__________________________________ 
Yahoo! for Good - Make a difference this year. 
http://brand.yahoo.com/cybergivingweek2005/

Mime
View raw message