由于工作不需要用到hibernate,工作5年了还不懂hibernate,现在开始学了。。
先运行了几个例子,看了下源代码,现在开始把包的功能介绍下,完全是自己的想法:
(一)net.sf.hibernate.cfg包
该包主要是配置hibernate各种环境参数用的
Environment
保存全局的hibernate常量,非常简单
Configuration
配置解析hibernate.cfg.xml入口文件,并解析*.hbm.xml,将解析完的所有配置信息分类保存在自己的实例变量中 注意不是静态全局变量,所以一个系统允许配置多个Configuration实例.
Binder
供Configuration调用,配置解析*.hbm.xml文件
DefaultNamingStrategy
命名转换策略,Configuration默认使用此策略,用户可以扩展置自定义的转化策略
ImprovedNamingStrategy
增强型命令转换策略,hibernate提供的一个实现,不是默认的实现方式
Mappings
Configuration封装解析hibernate.cfg.xml中的mapping元素所需要的所有参数。
Settings
封装方言Dialect的各种参数
SettingsFactory
创建并组装Settings
(二)net.sf.hibernate.connection包:
统一提供数据库连接
(三)net.sf.hibernate.dialect包
管理各种数据库方言,目的无非就是将各种数据库的共性和特性分隔开来。hibernate根据用户选择方言中配置信息来构建具体的SQL,从而使hibernate有跨数据库的能力
Dialect
所有各中具体数据库dialect的父类和工厂,提供统一的Dialect接口,一些公共方法的实现,hibernate只会和Dialect交互,不会和具体Dialect交互。
(四)net.sf.hibernate.engine
engine即"引擎",可见这个包管理的类是非常重要的。这些类/接口是hibernate的最低层的核心引擎。
(五)net.sf.hibernate.exception
从包名可以看出其作用是管理hibernate所用的所有exception的封装类
(六)net.sf.hibernate.expression
对hpl表达式解析的类
(七)net.sf.hibernate.hql
专门准对hql封装的类
(八)net.sf.hibernate.id
管理这种hibernate的UID生成实现的类
(九)net.sf.hibernate.impl
管理hibernate主要功能的实现类
(十)net.sf.hibernate.proxy
管理代理功能涉及到的类
(十一)net.sf.hibernate.transaction
管理事务涉及到的类
(十二)net.sf.hibernate.type
管理hibernate支持的映射类型
(十三)net.sf.hibernate.util
管理hibernate所有的工具类
(十四)net.sf.hibernate.loader
管理 加载数据库用的类,类框图如下
(十五)net.sf.hibernate.mapping
管理 配置文件的映射信息的类