`

hibernate源码分析 -- 持久化原理

阅读更多
hibernate的持久化机制是采用session容器的方式来缓存数据,当进行save或者update对象时,Hibernate并未将这个对象实际的写入数据库中,而仅仅是在session缓存中根据应用的行为做了登记,在真正需要将缓存中的数据flush入数据库时才执行先前登记的所有行为。
这里执行就包括hibernate提出的二个概念VO,PO
VO(Value Object)是独立的Java Object。
PO(Persistence Object)是由Hibernate纳入其实体容器(EntityMap)的对象,它代表了与数据库中某条记录对应的Hibernate实体,PO的变化在事务提交时将反应到实际数据库中。如果一个PO与Session对应的实体容器中分离(如Session 关闭后的PO),那么此时,它又会变成一个VO。

Hibernate到底是怎样运作的。
需要将所有缓存flush入数据库,Session启动一个事务,并按照insert,update,……,delete的顺序提交所有之前登记的操作(注意:所有insert执行完毕后才会执行update)

Hibernate的flush处理机制,我们在一些复杂的对象更新和保存的过程中就要考虑数据库操作顺序的改变以及延时flush是否对程序的结果有影响。如果确实存在着影响,那就可以在需要保持这种操作顺序的位置加入flush强制Hibernate将缓存中记录的操作flush入数据库,这样看起来也许不太美观,但很有效。

分享到:
评论

相关推荐

    hibernate-orm-master.zip

    通过深入学习Hibernate源码,我们可以了解到其实现原理,更好地利用其特性,解决实际开发中的问题,同时也能为其他ORM框架的理解提供参考。在阅读源码的过程中,不仅能提升Java和数据库操作的技能,还能培养解决问题...

    孙卫琴-精通hibernate-源码-chapter1

    《孙卫琴-精通Hibernate-源码-Chapter1》是一份深入探讨Hibernate源码的教程,旨在帮助读者理解并掌握Hibernate这一强大ORM框架的核心机制。Chapter1作为整个系列的开端,通常会涵盖Hibernate的基础概念、架构设计...

    Hibernate源码解析(一)

    Hibernate是由 Gavin King 创建的一个开源项目,它提供了一种在Java应用中持久化对象到关系数据库的解决方案。通过ORM,Hibernate将对象模型与关系数据库模型进行映射,使得开发人员可以使用面向对象的方式来处理...

    Hibernate one-to-many / many-to-one关系映射

    在Java的持久化框架Hibernate中,关系映射是数据库对象之间的关联方式,它允许我们将复杂的数据库结构映射到Java对象上。"Hibernate one-to-many / many-to-one关系映射"是两个基本的关系类型,用于表示实体间的关联...

    hibernate-3.2.6-src_b.rar

    阅读Hibernate源码可以帮助开发者理解ORM框架的设计原理,提升数据库操作效率,同时也能学习到如何设计高性能、可扩展的系统。例如,了解SessionFactory的生命周期管理,可以优化应用的启动性能;研究Session的缓存...

    hibernate search源码

    它允许开发者对持久化的实体对象进行索引,然后执行全文搜索,返回相关的数据结果。在源码层面,我们可以看到Hibernate Search是如何将ORM的便捷性与搜索引擎的高效性结合起来的。 **2. 源码结构** `hibernate-...

    hibernate-3.2.6-bin_b.rar

    本篇文章将围绕"hibernate-3.2.6-bin_b.rar"这个压缩包,结合其内容,深入探讨Hibernate 3.2.6版本的核心概念、功能和源码分析。 首先,"hibernate-3.2.6-bin_b.rar"是一个与"hibernate-3.2.6-bin_a.rar"合并使用的...

    hibernate-jpa-2.1-api-1.0.0.draft-6-sources

    源码分析的过程中,我们可以看到Hibernate如何将JPA规范转化为具体的实现,例如,`EntityManager`接口及其实现类如何处理CRUD操作,`PersistenceUnitUtil`类如何处理元数据的获取,以及`Query`接口的实现如何解析并...

    Hibernate源码

    Hibernate源码分析有助于深入理解其内部机制,提高开发效率,优化数据库操作性能。 1. **Hibernate核心模块(hibernate-core)** Hibernate的核心模块包含了ORM框架的主要功能,如实体管理、查询语言(HQL)、事件...

    hibernate-orm-5.0源代码

    通过深入学习和分析Hibernate ORM 5.0的源代码,开发者不仅能了解其实现原理,还能掌握如何优化性能,解决实际项目中的问题,提升开发效率。理解并熟练运用这些知识,将使你在Java ORM领域更上一层楼。

    hibernate-release-4.3.11.Final.zip

    包含的源码文件可以帮助开发者深入理解Hibernate的工作原理,例如Entity Manager、Query接口的实现,以及持久化过程中的对象状态管理等。这对于调试问题、优化性能以及扩展自定义功能非常有帮助。 总结,"hibernate...

    hibernate源码

    在这个`hibernate-release-4.1.4.Final`版本中,包含了完整的Hibernate源码以及所有必要的jar包,使得我们可以深入理解其工作原理并进行定制开发。 首先,让我们探讨一下Hibernate的核心概念。Hibernate的核心是...

    Hibernate源码解析(三)

    在阅读《Hibernate源码解析(三)》的过程中,配合hibernate源码分析(三).docx文档,读者可以更直观地理解这些概念,并可能涉及具体的类和方法,如`Query`、`SessionFactoryBuilder`、`EntityPersister`等。...

    韩顺平hibernate3.3视频教程源码4-5day

    最后,通过源码分析,我们可以了解到Hibernate的工作原理,包括对象状态管理、持久化过程以及查询执行机制。这有助于开发者在实际项目中更好地优化代码,提高性能。 总之,《韩顺平Hibernate3.3视频教程源码4-5day...

    hibernate-2.1.8-all-src.zip

    1. Session接口:它是Hibernate的核心接口,提供了对持久化对象的操作,如保存、更新、删除和加载。通过SessionFactory创建Session实例,进而执行数据库操作。 2. Configuration类:负责读取hibernate.cfg.xml配置...

    精通hibernate源码ch5

    《精通Hibernate源码Chapter5:Java对象持久化技术详解》 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。深入理解Hibernate的源码,不仅能帮助开发者提高工作效率,还能...

    hibernate-release-5.2.0.Final

    总结,Hibernate 5.2.0 Final是一个强大且成熟的ORM框架,通过源码分析,我们可以深入了解其工作原理,进一步提高开发效率。无论是新手还是经验丰富的开发者,都能从中受益,提升对数据库操作的控制力和灵活性。

    hibernate-orm-4.3.zip

    Hibernate ORM 4.3 是一个重要的Java持久化框架,它的源代码对于理解ORM(对象关系映射)机制、数据库交互以及Java开发有着深远的影响。这个版本的发布,为开发者提供了一个深入了解Hibernate内部工作原理的机会。 ...

    Hibernate主键策略-sequence

    在本篇内容中,我们将深入探讨"Hibernate主键策略-sequence",并结合标签中的"源码"和"工具",分析其工作原理和实际应用。 首先,让我们理解什么是序列(Sequence)。在关系型数据库中,如Oracle、PostgreSQL等,...

Global site tag (gtag.js) - Google Analytics