So it sounds like there are a couple options ...

1. alter our hibernate mappings to for lazy="false" by default.  this would 
require upgrading our xdoclet version.

2. alter our pojos to force the use of getters/setters and prevent the use of 
direct accessors.

personally, i think we should do both, but i would be more adamant about doing 
#2.  the standard pojo/bean pattern recommends that attributes be private and 
only accessed through getters and setters and i believe we should adhere to 
that.  it seems pretty lame that hibernate couldn't deal with direct access, 
but oh well.  with a bit of IDE wizardry it shouldn't be too hard to make this 
happen.

of course it also makes sense that we probably don't need to use lazy loading 
on *all* pojo properties, so defaulting to lazy="false" would be a good thing 
too.  i don't know all the details about why that was changed in hibernate 3, 
maybe there is a good reason to use lazy loading all the time?  maybe this 
would account for the performance improvements you noted on your site Dave?

what does everyone else prefer to do?

-- Allen


On Wed, 2005-11-02 at 06:17, Dave Johnson wrote:
> On Nov 2, 2005, at 7:44 AM, Dave Johnson wrote:
> >> Anil wrote:
> >> Changing the loading behavior in the mappings to be non-lazy one 
> >> should be able to avoid this behavior.  If we have a lot of code 
> >> dealing with pojo members directly, we may want to do this.  I 
> >> believe the laziness defaults changed between 2.x and 3.x.
> >
> > The more involved fix is to upgrade to the latest XDoclet (which may 
> > require building it from CVS to get around that bug that bit me), set 
> > lazy="false" at the class level and set lazy="true" for the individual 
> > collections that we want to be lazy-loaded (and I think we're already 
> > doing that). We're using XDoclet 1.2b4 and the latest XDoclet is 1.2.
> 
> I've implemented that more involved fix in my workspace. I upgraded to 
> XDoclet 1.2.3, found a reasonable work-around for that bug I mentioned 
> and set lazy="false" at the @hibernate.class level for all 28 of our 
> POJOS. Roller appears to be working fine in my workspace.
> 
> There are three reasons why we might want to commit this for 2.0:
> 1) it solves the intermittent null problem (we need to verify this)
> 2) it's better to use an official release of XDoclet rather than custom 
> 1.2b4 build
> 3) it's better to stick with lazy="false" since that's what we were 
> doing before 2.0
> 
> Since I can't duplicate the intermittent null problem, Allen needs to 
> verify that #1 is a true statement.
> 
> - Dave
> 

Reply via email to