`
wjboy49
  • 浏览: 284626 次
  • 性别: Icon_minigender_1
  • 来自: 湖南岳阳
社区版块
存档分类
最新评论

看Hibernate源码 001

    博客分类:
  • java
阅读更多

我看书的方式一向是"读书不求甚解", 先大概扫一眼都有些什么东西, 给自己留个大概印象, 然后再慢慢钻进去看.

做Hibernate一般是先接触配置文件(我总觉得用工具生成的配置文件不如自己写的有底), 于是过来一遍org.hibernate.mapping包, 里面是一大堆对应于配置文件的元素的定义类, 每个类的名称, 含义, 注释, 清清楚楚, 结构分明, 果然是大师手笔, 非常的"面向对象"......

好了, 按照常见的编程路线走吧. 用Hibernate的代码一般是这样写的:

new Configuration().configure().buildSessionFactory().openSession()

行, 就按照这个方式看进去.

Configuration: 顾名思义, 加载配置, 把hibernate.cfg.xml, xxx.hbm.xml以及hibernate.properties都加载起来. 加载过程非常复杂.

Configuration.buildSessionFactory: 也是非常复杂的方法, 基本上你在hibernate能见到的特性都涉及到了, 什么transaction, cache, mapping, id generator, session context, ...数不胜数. 其中还有一步SecondPassCompile, 就是在hibernate.cfg.xml, xxx.hbm.xml完毕后检查依赖关系, ID&HQL&sQL合法性等等的, 巨复杂 - -!!!

难怪Gavin King在他的书中写着"创建一个SessionFactory的代价非常昂贵"

Hibernate为每一个类生成一个ClassPersister, 这样做的好处是职责分明, 每个ClassPersister负责自己对应的类的持久化操作. 漂亮! 在创建SessionFactory的过程中, Hibernate在所有的ClassPersister对象都建立后,执行一个postInitilize的动作, 这是一个大动作, 期间会生成对应的类的select SQL, 即后来的session.load(Class,Serilizable), session.get等方法都会用到, 与我一开始想到有差别, 本以为这些SQL是在调用session.load等方法的时候才会生成.

Gavin King还提到Hibernate3 is a rewrite of Hibernate2 base on event mechanism, 大致就是这个意思, 所以在初始化SessionFactory过程中注册了大堆的event listeners.

源代码里面有大量的call back, 精心设计的接口和类层次, 可以学到非常多东西.

另外, 人家写注释的方式也可以学习一下: 简洁, 直接的描述某个类/方法做的事情, 职责.

分享到:
评论

相关推荐

    hibernate源码包

    hibernate源码

    hibernate 源码直接导入Eclipse

    - 导入源码:将解压后的Hibernate源码文件夹中的所有jar文件添加到项目的lib目录下,并右键点击项目 -> Build Path -> Configure Build Path -> Libraries -> Add Jars 或 Add External Jars 添加这些依赖。...

    Hibernate源码(hibernate-orm-main.zip)

    Hibernate源码(hibernate-orm-main.zip)Source Code: Hibernate ORM 是一个为应用程序、库和框架提供对象/关系映射 (ORM) 支持的库。 它还提供了 JPA 规范的实现,这是 ORM 的标准 Java 规范。

    hibernate源码 直接使用

    标题"hibernate源码 直接使用"表明我们将探讨的是Hibernate框架的源代码,以及如何直接在项目中应用这些源代码。Hibernate是一个流行的Java ORM(对象关系映射)框架,它简化了数据库操作,将数据库交互转化为面向...

    Hibernate源码解析(一)

    《Hibernate源码解析(一)》 在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。深入理解Hibernate的源码,不仅可以帮助开发者更好地运用该工具,还能提升对Java编程和...

    Hibernate源码

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

    传智播客hibernate源码

    标题"传智播客hibernate源码"暗示了这是一个关于Hibernate框架的源代码学习资源,可能包含了对Hibernate框架内部机制的深入解析,以及如何在实际项目中应用Hibernate的相关示例。 描述中的内容重复,进一步确认了这...

    精通Hibernate源码.rar

    《精通Hibernate源码》 Hibernate,作为Java领域中的一款强大且广泛应用的对象关系映射(ORM)框架,极大地简化了数据库操作。深入理解Hibernate的源码,对于提升开发效率、优化性能以及解决实际问题具有重大意义。...

    hibernate源码

    深入理解Hibernate源码有助于开发者更好地掌握其工作原理,从而提高开发效率,解决实际问题。以下是对Hibernate源码相关知识点的详细阐述: 1. **对象关系映射(ORM)**:ORM是将数据库中的数据与Java对象进行映射...

    hibernate源码的学习

    在Hibernate源码的学习过程中,我们可以深入理解ORM的工作原理,提高我们的Java开发技能,并且能够更好地优化数据库操作。 一、Hibernate核心组件 1. Configuration:配置对象,负责读取hibernate.cfg.xml文件,...

    Hibernate源码解析(三)

    《Hibernate源码解析(三)》这篇文章主要探讨了Hibernate框架的深入源码解析,这是对 Hibernate 框架理解的进一步深化。在本篇中,作者聚焦于几个关键的组件和机制,帮助读者理解 Hibernate 如何高效地管理和操作...

    传智播客hibernate源码.rar

    《深入理解Hibernate源码》 Hibernate,作为Java领域中的一款著名持久化框架,极大地简化了数据库操作,使得开发者能够更加专注于业务逻辑。本资料主要基于“传智播客hibernate源码.rar”进行深入剖析,旨在帮助你...

    Struts,Spring,Hibernate源码包

    总之,深入学习Struts、Spring和Hibernate的源码,对于提升Java开发者的专业水平具有重要意义。这不仅涉及到了Web开发的基本原理,还涵盖了软件设计、框架构建和数据库交互等多方面的知识。通过这种方式,开发者可以...

    hibernate源码分析

    **Hibernate源码分析** Hibernate,一个著名的开源Java对象关系映射(ORM)框架,通过将Java对象和数据库表之间的映射关系自动化,极大地简化了数据访问层的开发工作。本篇将深入探讨Hibernate的源码,揭示其执行...

    hibernate tools源码运行或修改需要的jar

    要运行或修改Hibernate Tools的源码,首先需要确保你拥有所有必要的依赖库,这些依赖通常以jar文件的形式存在。以下是一些关键的知识点: 1. **Hibernate ORM框架**:Hibernate是一个开源的对象关系映射(ORM)框架...

Global site tag (gtag.js) - Google Analytics