`

hibernate 懒加载问题的一个临时解决方案

阅读更多

hibernate的懒加载问题时常会困扰着我们, 今天发现了hibernate自身也提供一些解决办法

Hibernate.initialize(company.getUsers());  这样就加载了users集合

但不支持递归加载

 it is not guaranteed that the elements INSIDE the collection will be initialized/materialized

假如这时session关闭了  会报错

 

 

真正解决懒加载还是应该在类的设计 xml文件的配置上下功夫

 

源码:

	/**
	 * Force initialization of a proxy or persistent collection.
	 * <p/>
	 * Note: This only ensures intialization of a proxy object or collection;
	 * it is not guaranteed that the elements INSIDE the collection will be initialized/materialized.
	 *
	 * @param proxy a persistable object, proxy, persistent collection or <tt>null</tt>
	 * @throws HibernateException if we can't initialize the proxy at this time, eg. the <tt>Session</tt> was closed
	 */
	public static void initialize(Object proxy) throws HibernateException {
		if ( proxy == null ) {
			return;
		}
		else if ( proxy instanceof HibernateProxy ) {
			( ( HibernateProxy ) proxy ).getHibernateLazyInitializer().initialize();
		}
		else if ( proxy instanceof PersistentCollection ) {
			( ( PersistentCollection ) proxy ).forceInitialization();
		}
	}

	/**
	 * Check if the proxy or persistent collection is initialized.
	 *
	 * @param proxy a persistable object, proxy, persistent collection or <tt>null</tt>
	 * @return true if the argument is already initialized, or is not a proxy or collection
	 */
	public static boolean isInitialized(Object proxy) {
		if ( proxy instanceof HibernateProxy ) {
			return !( ( HibernateProxy ) proxy ).getHibernateLazyInitializer().isUninitialized();
		}
		else if ( proxy instanceof PersistentCollection ) {
			return ( ( PersistentCollection ) proxy ).wasInitialized();
		}
		else {
			return true;
		}
	}
分享到:
评论

相关推荐

    hibernate3.5

    总的来说,Hibernate 3.5提供了一个强大且灵活的ORM解决方案,简化了Java应用的数据库操作,但同时也需要注意其潜在的性能影响和设计复杂性。熟悉和掌握Hibernate的核心概念和用法,将使你在Java开发中受益匪浅。

    hibernate3.2+cglib2.2架包

    总之,这个压缩包提供的Hibernate 3.2和修复后的CGlib 2.2是为了解决可能的运行时冲突,并提供了一个完整的ORM解决方案,使得Java开发者可以更高效地操作数据库。在实际项目中,开发者需要结合这些库,根据项目需求...

    hibernate完整开发包

    最后,"支持JAVA8"说明这个版本的Hibernate已经适应了Java 8的新特性,开发者可以充分利用Java 8的语法和功能来构建ORM解决方案。 **标签解析** 标签"hibernate5.0"强调了这是关于Hibernate 5.0版本的内容,这可能...

    Hibernate开发各类项目的技术总结

    Hibernate,作为Java领域的一个强大对象关系映射(ORM)框架,极大地简化了数据库操作,让开发者可以专注于业务逻辑而非繁琐的SQL语句。在我一年半的开发经验中,我逐渐积累了对Hibernate的深入理解和实用技巧,现在...

    Java.Persistence.with.Hibernate.pdf

    Hibernate是一个开源的ORM框架,它为Java应用程序提供了强大的数据持久化功能。通过将Java对象与数据库表建立映射关系,Hibernate简化了复杂的SQL操作,使开发者能够更加专注于业务逻辑的实现。 Hibernate的核心...

    Hibernate的详解

    Hibernate是由Jboss公司开发的一个开源对象关系映射(ORM)框架,它为Java应用程序提供了数据持久化的解决方案。通过ORM,Hibernate将数据库中的表映射为Java对象,使得开发者可以像操作普通Java对象一样操作数据库...

    HIBERNATE现代使用方式

    懒加载依赖于代理对象,这也是Hibernate的一个核心机制。 5. **事务管理**:在现代SSH环境中,Spring提供了一种声明式事务管理方式,开发者无需显式处理`commit`和`rollback`,只需在方法上添加`@Transactional`...

    Hibernate源码.rar

    Hibernate是一款开源的对象关系映射(ORM)框架,它极大地简化了Java应用开发中与数据库的交互。通过阅读和理解Hibernate的源码...同时,对于遇到的性能问题或异常情况,了解源码也能帮助我们找到更深层次的解决方案。

    hibernate3api

    总结,Hibernate 3 API提供了一整套完善的ORM解决方案,使得开发者可以专注于业务逻辑,而非底层的数据库操作。通过理解并熟练掌握Hibernate的核心概念和API,可以大大提高Java应用程序的开发效率和质量。

    Hibernate2.1.2参考手册中文版

    Hibernate作为Java领域中备受推崇的数据持久化解决方案,极大地简化了Java应用程序与数据库之间的交互。下面,我们将深入探讨该手册中的关键知识点。 首先,Hibernate的核心思想是对象关系映射,它允许开发者使用...

    hibernate-原理共2页.pdf.zip

    Hibernate作为Java中最流行的ORM框架,提供了便捷的数据持久化解决方案。 1. **配置与初始化** Hibernate的使用首先需要进行配置,包括数据库连接信息、实体类路径等。这些信息通常在`hibernate.cfg.xml`配置文件...

    hibernate-3.2

    综上所述,Hibernate 3.2版本提供了一套完善的ORM解决方案,大大简化了Java开发中的数据库操作,同时通过丰富的API和配置选项,满足了各种复杂场景的需求。学习和掌握这些知识点,对于提升Java应用的开发效率和质量...

    Hibernate 5 用户手册 中文版(带目录)

    Hibernate 是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了数据持久化的解决方案。Hibernate 5 是该框架的最新版本,旨在简化数据库操作,提高开发效率,同时保持灵活性和高性能。本手册是针对Hibernate...

    hibernate整合ehcache的jar包.zip

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者用面向对象的方式处理数据库操作。而Ehcache则是一款高效的、开源的缓存解决方案,它可以极大地提高应用程序的性能,特别是对于频繁...

    hibernate缓存ehcache用法

    在IT行业中,Hibernate是一个非常流行的Java对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。Ehcache是Hibernate常用的二级缓存解决方案,它可以提高应用程序的性能和...

    Hibernate3.1API.rar

    总结,Hibernate3.1 API提供了一整套完善的ORM解决方案,涵盖了数据库的配置、对象的映射、查询语言、事务管理以及性能优化等多个方面。深入理解和掌握这些知识点,将有助于Java开发者高效地进行数据库操作,提高...

    hibernate-distribution-3.6.6.Final-dist

    在Hibernate 3.6.6这个版本中,我们看到了一个稳定、成熟且全面的ORM解决方案。"hibernate-distribution-3.6.6.Final-dist.zip"是Hibernate 3.6.6的完整发行版,包含了所有必要的文件和文档,为开发者提供了便捷的...

    Hibernate开发指南.pdf

    解释ORM框架的概念,对比其他ORM解决方案,突出Hibernate的特点和优势。 2. **安装与配置**:详述Hibernate的安装过程,包括JDK、JDBC驱动和Hibernate库的设置。指导读者如何配置Hibernate的主配置文件(hibernate....

    [尚硅谷]_佟刚_Hibernate面试题分析

    Hibernate作为Java领域内非常流行的持久层框架,提供了对象与关系数据库之间的映射解决方案。在面试中关于Hibernate的问题通常考察应聘者对这一框架的理解深度以及实际应用能力。以下是根据提供的文件内容总结的知识...

    数据持久层框架 Hibernate.7z

    数据持久层框架 Hibernate 是一种广泛应用于Java环境中的对象关系映射(ORM)工具,它极大地简化了数据库操作,使得开发者可以使用...同时,由于Hibernate的广泛使用和社区支持,遇到问题时通常能找到丰富的解决方案。

Global site tag (gtag.js) - Google Analytics