Gavin King wrote:

In my private chats with people, it seems we all agree that
currently, Hibernate2 association fetch strategy configuration
is confusing and has nonsensible defaults. I've spent quite a
lot of time thinking about how we could clean this up without
breaking 2.x mapping documents too much, and come to the
conclusion that this would be the best approach:

(1) make lazy default to true on both <class> and <collection>
   mapping elements; if a class cannot be proxied, laziness
   is transparently disabled; make it clear that we intend
   laziness to be used 99% of the time

Most controversial part but I'm +1 from a pragmatic perspective. However, I can understand people thinking it's a bit too much since it's not 100% sure you can lazy, and the '1 query to bind them all' is a very common urban legend.
We should emphasize *a lot* the fetch HQL keyword (complex to understand with its 1 collection fetched only). It'll be (if not already) a key tool.



(2) provide <hibernate-mapping default-lazy="false">, to override this new default for backward compatibility purposes

+1


(3) deprecate (remove?) the confusingly named outer-join attribute

+1, my favorite


(4) introduce the fetch attribute, where, at least initially, the options are fetch="join|select"; eventually we may add other options like fetch="immediate-select"

+1 immediate-select means unlazy but wo join, correct ?


Questions:

* The default should be fetch="select" for collections, what
 should the default be for to-one associations? I suppose
 that purely for backward compatibility purposes we need
 fetch="auto|join|select", where auto is the default, and
 chooses "select" for a lazy-enabled class.

To stay consistent with (4), add a default value (I know one more). I've never been fond of the 'auto'-magical configuration. It has confused tons of guys I've worked with.



* Should we provide XSLT stylesheets to transform 2.x mapping to 3.0 mappings, rather than providing backward compatibility at the mapping document level, by adding default-lazy and continuing to support the outer-join attribute?

-0, some guys had the old style in mind, and they might want to keep it. The tool convertor is a one shot, not an every day choice.



* Anything else needed?

We *must* provide a clear and clean material on what to do to lazy, fetch a collection a to-one etc... We'll need a clean separation between H2 and H3 docs (whether wiki or not).



* Does this suck?

Nope, be ready to argue kindly with a lot of guys :-)

--
Emmanuel Bernard
[EMAIL PROTECTED]
http://www.hibernate.org



-------------------------------------------------------
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
_______________________________________________
hibernate-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/hibernate-devel

Reply via email to