hibernate学习笔记(一)
由于工作不需要用到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
管理 配置文件的映射信息的类?
?
?
??
??
???????????
?
?
?