`
kevin-qingzhan
  • 浏览: 84808 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

hibernate中懒加载的处理

阅读更多
hibernate中懒加载的处理 (2008-12-01 14:26:52)
标签:懒加载 杂谈   分类:技术料理

hibernate中,如果在映射对象关系的时候,在一对多中(group->users)如果设置了lazy load(懒加载),那么根据group得到users时,需要特殊处理。如下:

使用查询


import net.sf.hibernate.HibernateException;import net.sf.hibernate.Session;import net.sf.hibernate.Query;import org.springframework.orm.hibernate.HibernateCallback;import org.springframework.orm.hibernate.support.HibernateDaoSupport;public class UserDAO extends HibernateDaoSupport{. . . public Group findGroupByName(String name) {return (Group) getHibernateTemplate().find("from Group g where g.name=?",name).get(0);} public Group findPopulatedGroupByName(final String name) {HibernateCallback callback = new HibernateCallback(){public Object doInHibernate(Session session) throws HibernateException, SQLException {Group group =null;String query = "from Group g where g.name=?";Query queryObject = getHibernateTemplate().createQuery(session, query);queryObject.setParameter(0, name);group = (Group) queryObject.list().get(0);group.getUsers().size();//force loadreturn group;}};return (Group) getHibernateTemplate().execute(callback);}. . . } 


您可能会注意到第二个方法比第一个方法复杂得多,因为它强迫加载 users 集合。因为 Group->Users 之间的关系设置为 lazy initialize(即表 2 中 lazy="true"),组对象需要一个活跃的会话以查询用户。在定义 Group 和 Users 之间关系时设置这个属性为 lazy="false",则不需要第二个方法。在这种情况下,可能使用第一种方法 (findGroupByName) 列出组,用第二种方法(findPopulatedGroupByName)查看组细节
分享到:
评论

相关推荐

    hibernate懒加载策略.doc

    在Java持久化框架Hibernate中,懒加载(Lazy Loading)是一种优化策略,用于提高应用程序的性能和效率。懒加载的基本思想是“按需加载”,即在实际需要数据时才进行数据库查询,而不是在对象初始化时一次性加载所有...

    hibernate抓取策略和懒加载案例

    在Java的持久化框架Hibernate中,数据访问优化是至关重要的,而抓取策略(Fetch Strategy)和懒加载(Lazy Loading)则是实现这一目标的关键技术。本文将深入探讨这两个概念,并通过具体的案例进行分析。 首先,让...

    集成spring的hibernate懒加载

    在Java的Web开发中,Spring框架与Hibernate的整合是常见的数据访问层实现方式。Spring提供了强大的依赖注入(DI)和AOP(面向切面编程...以上就是关于"集成spring的hibernate懒加载"问题的详细解析,希望对你有所帮助。

    Hibernate之数据加载方式

    1. **懒加载(Lazy Loading)**:默认情况下,Hibernate采用懒加载策略,即关联的对象不会在初始化时加载,而是在首次访问该关联对象时才加载。这种方式能有效减少内存消耗和提高性能。 2. **立即加载(Eager ...

    hibernate 延迟加载深入剖析

    在现代软件开发中,特别是与数据库交互的应用场景下,Hibernate作为一款流行的Java持久层框架,提供了多种高效处理数据的技术。其中,延迟加载(Lazy Loading)是一种非常重要的特性,它可以显著提高应用程序的性能...

    hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法

    hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法 Hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法是 Hibernate 框架中的一种常见问题。当我们在 Hibernate 中使用懒加载特性时,可能会遇到 ...

    Hibernate lazy延迟加载

    **标题**: Hibernate懒加载(Lazy Loading) 在Java的持久化框架Hibernate中,懒加载(Lazy Loading)是一种重要的优化策略,它的核心思想是“延迟加载”或“按需加载”。默认情况下,当一个实体被加载时,并不会...

    懒加载异常解决.docx

    通过配置OpenSessionInViewFilter,可以在很大程度上解决懒加载异常的问题,尤其是在Java Web应用中使用Hibernate等ORM框架时。当然,还需要根据实际项目的具体情况,灵活调整和优化配置,以达到最佳的性能和稳定性...

    hibernate延迟加载解决

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者用面向对象的方式处理数据库操作。在大型项目中,由于数据量庞大,为了提高性能和减少数据库的负载,Hibernate引入了“延迟加载”...

    Flex 与 Hibernate 的延迟加载问题

    5. **AOP拦截查询方法**:使用Aspect-Oriented Programming(AOP)拦截查询,去除懒加载属性。这种方法需要对AOP有深入理解。 6. **Gilead**:Gilead是文中推荐的解决方案,它允许在Flex和Hibernate之间直接使用...

    理解Hibernate中PO的代理类

    Hibernate懒加载的常见问题之一是代理类初始化问题。如果在持久化上下文(Session)之外或事务结束之后尝试访问懒加载属性,就会引发`LazyInitializationException`异常。为了避免这种情况,需要在配置或代码中妥善...

    gilead hibernate lazyload例子

    《Gilead与Hibernate懒加载在Flex中的应用实践》 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,随着应用程序的复杂性增加,数据量庞大的时候,如何有效地管理...

    【北大青鸟内部教程】jsp中关于Hibernate延时加载的问题

    2. **懒加载失效**:在JSP页面上直接访问延时加载的属性可能导致懒加载失效,因为JSP执行在Web容器的上下文中,而这个上下文可能在Session关闭后。为解决此问题,可以在Controller层或Service层提前加载关联数据,...

    Hibernate延时加载与lazy机制.doc

    Hibernate的延迟加载(Lazy Loading)和懒加载机制(Lazy Initialization)是优化ORM框架性能的重要策略。这个机制的主要目的是提高程序的效率,减少不必要的数据库交互,只在真正需要数据时才去加载它们。以下是对...

    hibernate中处理大字段 网上收集的文档

    1. 懒加载:默认情况下,Hibernate会立即加载所有关联的字段。然而,对于大字段,我们可能希望延迟加载,直到真正需要时才从数据库获取。为此,可以使用`@Basic(fetch = FetchType.LAZY)`注解或在XML映射中设置`...

    hibernate延迟加载技术详细解

    - 默认情况下,Hibernate 3 采用懒加载策略来处理关联对象的加载。 - 可以通过配置 `hibernate.default_batch_fetch_size` 参数来调整默认的批量加载大小。 2. **使用示例**: - 例如,假设有一个用户实体 User ...

    hibernate中文文档

    6. **懒加载(Lazy Loading)**:为了提高性能,Hibernate支持懒加载机制,即关联的对象在需要时才从数据库加载,而不是在加载主体对象时一起加载。 7. **缓存(Caching)**:Hibernate集成了二级缓存机制,可以...

    Hibernate 中文api 等学习资料

    6. **延迟加载和懒加载**:理解何时及如何使用这些特性来提高性能。 7. **实体生命周期**:了解Hibernate如何处理对象的创建、更新、删除等状态变化。 8. **性能调优**:包括批处理、连接池配置、查询优化等方面的...

    hibernate中文参考文档pdf

    10. **Lazy Loading和Eager Loading**:懒加载和急加载是对象加载策略,决定了何时从数据库加载关联对象,以优化性能。 11. **Hibernate缓存机制**:包括一级缓存(Session级别的缓存)和二级缓存(SessionFactory...

    hibernate动态映射表处理oracle的clob类型

    - **懒加载**:默认情况下,Hibernate可能会采用懒加载策略,即只有在实际访问CLOB字段时才会加载数据,以减少内存占用。 - **立即加载**:如果需要在对象初始化时就加载CLOB数据,可以设置fetch属性为`FetchType....

Global site tag (gtag.js) - Google Analytics