[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-3414) fetch profiles

Darren Bell (JIRA) noreply at atlassian.com
Tue Sep 22 05:08:50 EDT 2009


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-3414?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=34003#action_34003 ] 

Darren Bell commented on HHH-3414:
----------------------------------

Just an observation, but should setFetchProfile(profileName) be at the Criteria and Query level?  This would allow my daos to have the same session, but retrieve diffrerent profiles per query.

For example, I have a dao which subclasses another dao and which overrides the returned entity via covariance.  Each dao could then be set to a different fetch profile.

Does this make sense?

> fetch profiles
> --------------
>
>                 Key: HHH-3414
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-3414
>             Project: Hibernate Core
>          Issue Type: New Feature
>          Components: core, metamodel
>            Reporter: Steve Ebersole
>            Assignee: Steve Ebersole
>             Fix For: 3.7
>
>
> The concept of fetch profiles as we are discussing here is basically to allow users to dynamically affect the mapped fetching strategy for associations at runtime.
> Consider the following example:
> <class name="Person">
>     ...
>     <set name="addresses" lazy="true" fetch="subselect" ...>
>         ...
>     </set>
> </class>
> <class name="Address">
>     ...
> </class>
> This follows the normal recommendation to map associations as lazy and use a dynamic fetching strategy (ala HQL/Criteria) to modify this lazy behavior at runtime.
> The fetaure discussed here would allow the same behavior for loading as well:
> <hibernate-mapping>
>     <fetch-profile name="person-details">
>         <fetch path="Person.addresses" style="join"/>
>     </fetch-profile>
> </hibernate-mapping>
> Or:
> <hibernate-mapping>
> <class name="Person">
>     ...
>     <fetch-profile name="person-details">
>         <fetch path="addresses" style="join"/>
>     </fetch-profile>
>     <set name="addresses" lazy="true" fetch="subselect" ...>
>         ...
>     </set>
> </class>
> </hibernate-mapping>
> Now, doing:
> session.enableFetchProfile( "person-details" ).get( Person.class, 1 )...
> will load Person#1 as well as their addresses in a single joined query.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list