`
geeksun
  • 浏览: 965146 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate的强制加载策略

 
阅读更多

      在hibernate的使用场景中,有的关联对象不需要立即查出,这样可使用fetch="FetchType.LAZY"策略,当需要立即需要特定对象时,可使用hibernate的强制加载策略方法 initialize(Proxy object),其实就是初始化对象的代理,比如在编辑页面里lazy=true,在查看页面里 lazy=false,就要用到强制加载。

 

	/**
	 * 获取Prescription中其他扩展属性对象。
	 * 
	 * @param result
	 */
	private void initializeProperties(PaginationSupport<Prescription> result) {
		List<Prescription> items = result.getItems();
		if (items != null && !items.isEmpty()) {
			List<Prescription> persistenceList = new ArrayList<Prescription>(
					items.size());
			for (Prescription prescription : items) {
				Hibernate.initialize(prescription.getOffice());
				Hibernate.initialize(prescription.getDoctor());
				Hibernate.initialize(prescription.getDoctor().getOffice());
				Hibernate.initialize(prescription.getHospitalDistrict());
				Hibernate.initialize(prescription.getPatient());
				persistenceList.add(prescription);
			}
			result.setItems(persistenceList);
		}
	}

 

 

分享到:
评论

相关推荐

    浅谈解决Hibernate懒加载的4种方式

    Hibernate的懒加载策略是一种优化手段,它延迟了对象属性的加载,直到真正需要这些数据的时候才从数据库中获取。这种方式虽然可以减少数据库的访问次数,但在某些情况下,如需要访问已经关闭的session时,就可能引发...

    day36 07-Hibernate抓取策略:many-to-one上的抓取策略

    5. **@EntityGraph**:从Hibernate 4.3开始引入,允许我们定义图形化的加载策略,可以更精确地控制哪些关联应该被加载。 6. **NamedEntityGraph**:与@EntityGraph类似,但可以在全局或类级别定义,提供了一种更...

    理解Hibernate中PO的代理类

    在映射文件(如`Customer.hbm.xml`)中,可以为每个实体类配置不同的加载策略。通过设置`&lt;class&gt;`标签中的`lazy`属性为`true`,就可以启用懒加载。这表明,在使用`Session`的`load()`方法加载该实体时,Hibernate...

    hibernate3.3 jar包

    `bytecode`可能指的是Hibernate对字节码操作的支持,例如通过ASM或CGLIB库来动态生成代理类,以实现透明的懒加载和持久化策略。这部分内容对于理解Hibernate如何在内存中管理和跟踪对象的状态至关重要。 在使用...

    hibernate延迟机制分析

    在实体映射文件中,将关联集合的`lazy`属性设置为`false`,这将强制Hibernate在加载主实体时同时加载关联的集合。例如,在上述例子中,将`lazy="false"`改为`lazy="true"`,Hibernate会在查询部门(Dept)的同时加载...

    Hibernate面试问题大全

    以上只是一部分常见的Hibernate面试问题,完整的面试问题集可能会涉及更多高级主题,如第二级缓存、事务管理、Hibernate的事件监听器、CGLIB和ASM代理、JPA与Hibernate的区别、性能调优策略等。熟悉这些知识点对于...

    Hibernate Developer Guide

    当需要强制同步持久性上下文与数据库的状态时,可以使用`flush()`方法。 ##### 3.7 修改管理/持续状态 在Session中管理对象状态的方法包括`saveOrUpdate()`、`merge()`等。 ##### 3.8 处理分离数据 **381. 接续...

    How to solve the hibernate N+1 problem?

    7. **调整懒加载与急加载策略**:根据业务需求,合理选择加载策略,避免在不需要时加载大量关联数据。 8. **使用`Session#load()`代替`Session#get()`**:在已知ID的情况下,`load()`方法不会立即发起数据库查询,...

    Hibernate使用技巧汇总

    以上内容总结了Hibernate使用过程中的一些重要技巧和注意事项,包括配置文件的选择与使用、实体关系管理、延迟加载策略以及与Spring框架的集成等关键知识点。通过掌握这些技巧,开发者可以更高效地利用Hibernate框架...

    hibernate多表查询详解

    例如,如果Table1和Table2存在一对多关系,我们可以在Table1的实体类中定义一个Table2类型的集合属性,然后通过`fetch`策略来一次性加载所有关联数据。 ```java @Entity public class Table1 { @OneToMany(mapped...

    Hibernate学习要点_one2one 一对一主键双线关联

    因此,合理设置关联的加载策略对于提高应用程序的性能至关重要。 5. **异常处理**:当处理一对一双线关联时,可能出现的异常情况包括:外键约束冲突、关联实体未找到等。开发者应编写适当的错误处理逻辑,确保应用...

    Hibernate4实战 之第七部分

    尽管在Hibernate中标识符属性不是强制性的,但强烈推荐使用它们。标识符应当是“人造”的,即由系统自动生成,不携带任何业务逻辑上的意义。这样做的好处包括: - **一致性**:确保在整个应用程序中实体的唯一...

    hibernate中文开发详解

    为了提高性能,Hibernate采用了三级缓存机制:一级缓存是强制性的,二级缓存是可选的,用于缓存查询结果,三级缓存由第三方提供,用于缓存特定的查询。 #### 5. **查询语言** 除了传统的SQL查询外,Hibernate还...

    Hibernate的cache缓存解析

    一级缓存是强制性的,主要用于存储当前会话期间获取的数据。它的生命周期与`Session`相同。 - **二级缓存**:二级缓存是可选的,用于跨多个`Session`共享数据,通常用于提高读取性能。实现二级缓存需要依赖第三方库...

    hibernate 一对多

    3. **fetch策略和cascade属性**:`fetch`属性用于指定加载关联对象的时机,可以是`LAZY`(延迟加载)或`EAGER`(立即加载)。`cascade`属性用于控制级联操作,如删除、更新等是否同步进行。 二、数据库表结构 1. **...

    hibernate-代码学习示例

    例如,当我们使用`session.get()`或`session.load()`方法获取实体时,EhCache会先检查缓存,如果找到则直接返回,否则才从数据库中加载。同样,当我们保存、更新或删除实体时,Hibernate会同步更新缓存中的数据。 ...

    hibernate_annotations.rar

    - `@Fetch(FetchMode.JOIN)`: 强制执行Eager加载,即在查询主实体时一同加载关联的实体。 6. **索引和唯一性注解** - `@Index`: 定义表列上的索引,提高查询速度。 - `@UniqueConstraint`: 在@Entity或@Table上...

    hibernate一对一关系详解

    Hibernate提供了多种加载策略,如`LAZY`(延迟加载)和`EAGER`(立即加载)。默认情况下,一对一关系被标记为`LAZY`,意味着在需要时才会加载关联的对象,以减少内存消耗和提高性能。 6. **唯一性和非空约束** ...

    HibernateAPI文档

    通过合理配置缓存策略、批处理、预加载关联对象等方式,可以显著提升Hibernate应用的性能。 综上所述,Hibernate API文档涵盖了从基本概念到高级特性的全面内容,是学习和使用Hibernate不可或缺的参考资料。虽然...

    Hibernate基础教程

    - **Session.flush()**:强制Hibernate将所有待执行的SQL语句发送到数据库。 - **执行时机**:通常在事务提交前调用。 - **数据库隔离级别**:控制并发操作的行为,防止脏读、不可重复读等问题。 - **Session.evict...

Global site tag (gtag.js) - Google Analytics