第一次读Hibernate源码

 



今天抽空读了下hibernate源码,总结了几条读源码的经验,而且认识了hibernate的部分源码结构。sql

首先,拿到一个框架,要先了解其基本功能,通读(略读)其API。
而后,经过其主要代码或其在项目中的常应用的类为入口,进行追踪。看看其实如何实现本功能的。同时,可在网上查找相关
文档,了解其基本架构。
在对其经常使用功能的实现有必定认识之后,而后通视源码,主要先从其工具类或实体类开始(由于易于理解,而且不像其余逻辑相关的类同样较为复杂)。
在阅读逻辑相关的类时,不只要'见文知意',还要仔细阅读注释,若是有Log日志输出,还能够借助日志输出字符来理解(在应用中还能够借助控制台日志打印信息来追踪程序执行过程)。沿着某项功能的实现为主线,跳跃式阅读。
最后,查缺补漏,找出还未阅读的代码(如不想深刻研究,就没必要了)。数据库

**在此发现了'解耦'的好处,不用把整个框架设计为一体,所有互相依赖,好比Hibernate里的一些工具类(如StringHelper类),这样在修改重构时会减小代码量。架构


今天只读了configuration类和相关的部分类元源码。
其中configuration类是Hibernate运行时的第一个类,他负责解析hibernate.cfg.xml,并做完成框架的初始化工做。app

下面是引用网上关于Hibernate各包的简介。框架


1.      org.hibernate :该包的类基本上都是接口类和异常类ide

2.      org.hibernate.cache.* :cache的实现类工具

3.      org.hibernate.cfg.* :配置文件读取类 测试

4.      org.hibernate.collection.* :Hibernate集合接口实现类:例如List(PersistentList),Set(PersistentSet),         Bag(PersistentBag)等等,Hibernate之因此要自行编写集合接口实现类是为了支持延迟加载。hibernate

5.      org.hibernate.connection.* :几个数据库链接池的Provider 设计

6.      org.hibernate.dialect.* :支持多种数据库特性,每一个Dialect实现类表明一种数据库,描述了该数据库支持的数据类型和其它特色,例如是否有AutoIncrement,是否有Sequence,是否有分页sql等等

7.      org.hibernate.eg.* :Hibernate文档中用到的例子

8.      org.hibernate.engine.* :这个包的类做用比较散

9.      org.hibernate.hql.* :HQL的实现org.hibernate.id.* :ID生成器

10.    orghibernate.impl.* :最核心的包,一些重要接口的实现类,若是Session,SessionFactory,Query等  

11.    org.hibernate.jca.* :JCA支持,把Session包装为支持JCA的接口实现类

12.    org.hibernate.jmx.* :jmx的实现

13.    org.hibernate.loader.* :也是很核心的包,主要是生成sql语句的

14.    org..hibernate.lob.* :Blob和Clob支持

15.    org.hibernate.mapping.* :hbm文件的属性实现

16.    org.hibernate.metadata.*:PO的Meta实现

17.    org.hibernate.odmg.*:ODMG是一个ORM标准,这个包是ODMG标准的实现类

18.    org.hibernate.persister.*:核心包,实现持久对象和表之间的映射

19.    org.hibernate.proxy.*:Proxy和Lazy Loading支持

20.    org.hibernate.ps.*:该包是PreparedStatment Cache

21.    org.hibernate.sql.*:生成JDBC sql语句的包

22.    org.hibernate.test.*:测试类,你能够用junit来测试Hibernate

23.    org.hibernate.tool.hbm2ddl.*:用hbm配置文件生成DDL

24.    org.hibernate.transaction.*:Hibernate Transaction实现类

25.    org.hibernate.type.*:Hibernate中定义的持久对象的属性的数据类型

26.    org.hibernate.util.*:一些工具类,做用比较散

27.    org.hibernate.xml.*:XML数据绑定

相关文章
相关标签/搜索