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;
}
}
分享到:
相关推荐
总的来说,Hibernate 3.5提供了一个强大且灵活的ORM解决方案,简化了Java应用的数据库操作,但同时也需要注意其潜在的性能影响和设计复杂性。熟悉和掌握Hibernate的核心概念和用法,将使你在Java开发中受益匪浅。
总之,这个压缩包提供的Hibernate 3.2和修复后的CGlib 2.2是为了解决可能的运行时冲突,并提供了一个完整的ORM解决方案,使得Java开发者可以更高效地操作数据库。在实际项目中,开发者需要结合这些库,根据项目需求...
最后,"支持JAVA8"说明这个版本的Hibernate已经适应了Java 8的新特性,开发者可以充分利用Java 8的语法和功能来构建ORM解决方案。 **标签解析** 标签"hibernate5.0"强调了这是关于Hibernate 5.0版本的内容,这可能...
Hibernate,作为Java领域的一个强大对象关系映射(ORM)框架,极大地简化了数据库操作,让开发者可以专注于业务逻辑而非繁琐的SQL语句。在我一年半的开发经验中,我逐渐积累了对Hibernate的深入理解和实用技巧,现在...
Hibernate是一个开源的ORM框架,它为Java应用程序提供了强大的数据持久化功能。通过将Java对象与数据库表建立映射关系,Hibernate简化了复杂的SQL操作,使开发者能够更加专注于业务逻辑的实现。 Hibernate的核心...
Hibernate是由Jboss公司开发的一个开源对象关系映射(ORM)框架,它为Java应用程序提供了数据持久化的解决方案。通过ORM,Hibernate将数据库中的表映射为Java对象,使得开发者可以像操作普通Java对象一样操作数据库...
懒加载依赖于代理对象,这也是Hibernate的一个核心机制。 5. **事务管理**:在现代SSH环境中,Spring提供了一种声明式事务管理方式,开发者无需显式处理`commit`和`rollback`,只需在方法上添加`@Transactional`...
Hibernate是一款开源的对象关系映射(ORM)框架,它极大地简化了Java应用开发中与数据库的交互。通过阅读和理解Hibernate的源码...同时,对于遇到的性能问题或异常情况,了解源码也能帮助我们找到更深层次的解决方案。
总结,Hibernate 3 API提供了一整套完善的ORM解决方案,使得开发者可以专注于业务逻辑,而非底层的数据库操作。通过理解并熟练掌握Hibernate的核心概念和API,可以大大提高Java应用程序的开发效率和质量。
Hibernate作为Java领域中备受推崇的数据持久化解决方案,极大地简化了Java应用程序与数据库之间的交互。下面,我们将深入探讨该手册中的关键知识点。 首先,Hibernate的核心思想是对象关系映射,它允许开发者使用...
Hibernate作为Java中最流行的ORM框架,提供了便捷的数据持久化解决方案。 1. **配置与初始化** Hibernate的使用首先需要进行配置,包括数据库连接信息、实体类路径等。这些信息通常在`hibernate.cfg.xml`配置文件...
综上所述,Hibernate 3.2版本提供了一套完善的ORM解决方案,大大简化了Java开发中的数据库操作,同时通过丰富的API和配置选项,满足了各种复杂场景的需求。学习和掌握这些知识点,对于提升Java应用的开发效率和质量...
Hibernate 是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了数据持久化的解决方案。Hibernate 5 是该框架的最新版本,旨在简化数据库操作,提高开发效率,同时保持灵活性和高性能。本手册是针对Hibernate...
在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者用面向对象的方式处理数据库操作。而Ehcache则是一款高效的、开源的缓存解决方案,它可以极大地提高应用程序的性能,特别是对于频繁...
在IT行业中,Hibernate是一个非常流行的Java对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。Ehcache是Hibernate常用的二级缓存解决方案,它可以提高应用程序的性能和...
总结,Hibernate3.1 API提供了一整套完善的ORM解决方案,涵盖了数据库的配置、对象的映射、查询语言、事务管理以及性能优化等多个方面。深入理解和掌握这些知识点,将有助于Java开发者高效地进行数据库操作,提高...
在Hibernate 3.6.6这个版本中,我们看到了一个稳定、成熟且全面的ORM解决方案。"hibernate-distribution-3.6.6.Final-dist.zip"是Hibernate 3.6.6的完整发行版,包含了所有必要的文件和文档,为开发者提供了便捷的...
解释ORM框架的概念,对比其他ORM解决方案,突出Hibernate的特点和优势。 2. **安装与配置**:详述Hibernate的安装过程,包括JDK、JDBC驱动和Hibernate库的设置。指导读者如何配置Hibernate的主配置文件(hibernate....
Hibernate作为Java领域内非常流行的持久层框架,提供了对象与关系数据库之间的映射解决方案。在面试中关于Hibernate的问题通常考察应聘者对这一框架的理解深度以及实际应用能力。以下是根据提供的文件内容总结的知识...
数据持久层框架 Hibernate 是一种广泛应用于Java环境中的对象关系映射(ORM)工具,它极大地简化了数据库操作,使得开发者可以使用...同时,由于Hibernate的广泛使用和社区支持,遇到问题时通常能找到丰富的解决方案。