On Jan 23, 2011, at 2:04 PM, Tarun Reddy wrote:

> So I've got a situation where I'm seeing a SELECT that will eventually kill 
> my performance and want to see if I can fix it before my site goes live.
> 
> My EOModel has an object called a Landing and an object called a 
> SiteDefinition. The SiteDefinition defines what the site looks like and the 
> Landing represents a user landing on the site. When a user comes to the site, 
> I create a Landing and associate it with the SiteDefinition so that I can 
> capture what site a user sees and what users were on a site.
> 
> SiteDefinition to many Landings
> 
> When I add the relationship using this:
> aLanding.setSiteDefinitionRelationship(getSiteDefinition());
> 
> WebObjects decides it needs to select all Landings where the siteDefinitionID 
> equals the one I'm assigning. This is fine in dev where I may only have 17 
> records but eventually I may have 10s of thousands of records.
> 
> Is this my EOModel, and if so how can I prevent it?
> 
> Thank you,
> Tarun

I think you want to look at the documentation on faulting and/or pre-fetching. 
EOF will optimize certain operations by pre-fetching data or setting up faults, 
which are place-holder objects for EOs. It is not all that common to edit 
EOModel objects dynamically. I suspect that when you create this relationship, 
it uses the most conservative faulting strategy it has, and so fetches a lot of 
stuff immediately.

You may also find the behavior changes if there is or is not an inverse 
relationship and different things about how the inverse relationship is set up 
will change things.

For example, look in the javadoc for EORelationship. You will see methods such 
as numberOfToManyFaultsToBatchFetch(), inverseRelationship(),  and 
ownsDestination(). See also the prefetchingRelationshipKeyPaths() method in 
EOFetchSpecification. These may not be exactly what you need but they will 
probably get you started.

Also, do you need to create your relationship dynamically in this way? There 
may be a better way to set up the relationship so that you do not have to do 
this.

cheers - ray


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to