知识大全 Hibernate简介

Posted 数据库

篇首语:道德可以弥补能力的不足,能力却难以掩盖道德的缺陷。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Hibernate简介相关的知识,希望对你有一定的参考价值。

Hibernate简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Hibernate是一个开放源代码的对象关系映射框架 它对JDBC进行了非常轻量级的对象封装 使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库 Hibernate可以应用在任何使用JDBC的场合 既可以在Java的客户端程序使用 也可以在Servlet/JSP的Web应用中使用 最具革命意义的是 Hibernate可以在应用EJB的J EE架构中取代CMP 完成数据持久化的重任

  Hibernate的核心接口一共有 个 分别为 Session SessionFactory Transaction Query和Configuration 这 个核心接口在任何开发中都会用到 通过这些接口 不仅可以对持久化对象进行存取 还能够进行事务控制 下面对这五的核心接口分别加以介绍

  ·Session接口 Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流 包含了很多常见的SQL语句 ) 但需要注意的是Session对象是非线程安全的 同时 Hibernate的session不同于JSP应用中的HttpSession 这里当使用session这个术语时 其实指的是Hibernate中的session 而以后会将HttpSesion对象称为用户session

  ·SessionFactory接口 SessionFactroy接口负责初始化Hibernate 它充当数据存储源的代理 并负责创建Session对象 这里用到了工厂模式 需要注意的是SessionFactory并不是轻量级的 因为一般情况下 一个项目通常只需要一个SessionFactory就够 当需要操作多个数据库时 可以为每个数据库指定一个SessionFactory

  ·Configuration接口 Configuration接口负责配置并启动Hibernate 创建SessionFactory对象 在Hibernate的启动的过程中 Configuration类的实例首先定位映射文档位置 读取配置 然后创建SessionFac

  ·Transaction接口 Transaction接口负责事务相关的操作 它是可选的 开发人员也可以设计编写自己的底层事务处理代码

  ·Query和Criteria接口 Query和Criteria接口负责执行各种数据库查询 它可以使用HQL语言或SQL语句两种表达方式

  Hibernate主键介绍

  Assigned

  Assigned方式由程序生成主键值 并且要在save()之前指定否则会抛出异常特点 主键的生成值完全由用户决定 与底层数据库无关 用户需要维护主键值 在调用session save()之前要指定主键值

  Hilo

  Hilo使用高低位算法生成主键 高低位算法使用一个高位值和一个低位值 然后把算法得到的两个值拼接起来作为数据库中的唯一主键 Hilo方式需要额外的数据库表和字段提供高位值来源 默认请况下使用的表是hibernate_unique_key 默认字段叫作next_hi next_hi必须有一条记录否则会出现错误

  特点 需要额外的数据库表的支持 能保证同一个数据库中主键的唯一性 但不能保证多个数据库之间主键的唯一性 Hilo主键生成方式由Hibernate 维护 所以Hilo方式与底层数据库无关 但不应该手动修改hi/lo算法使用的表的值 否则会引起主键重复的异常

  Increment

  Increment方式对主键值采取自动增长的方式生成新的主键值 但要求底层数据库的支持Sequence 如Oracle DB 等 需要在映射文件xxx hbm xml中加入Increment标志符的设置

  特点 由Hibernate本身维护 适用于所有的数据库 不适合多进程并发更新数据库 适合单一进程访问数据库 不能用于群集环境

  Identity

  Identity当时根据底层数据库 来支持自动增长 不同的数据库用不同的主键增长方式

  特点 与底层数据库有关 要求数据库支持Identity 如MySQl中是auto_increment SQL Server 中是Identity 支持的数据库有MySql SQL Server DB Sybase和HypersonicSQL Identity无需Hibernate和用户的干涉 使用较为方便 但不便于在不同的数据库之间移植程序

  Sequence

  Sequence需要底层数据库支持Sequence方式 例如Oracle数据库等特点 需要底层数据库的支持序列 支持序列的数据库有DB PostgreSql Qracle SAPDb等在不同数据库之间移植程序 特别从支持序列的数据库移植到不支持序列的数据库需要修改配置文件

  Native

  Native主键生成方式会根据不同的底层数据库自动选择Identity Sequence Hilo主键生成方式特点 根据不同的底层数据库采用不同的主键生成方式 由于Hibernate会根据底层数据库采用不同的映射方式 因此便于程序移植 项目中如果用到多个数据库时 可以使用这种方式

  UUID

  UUID使用 位UUID算法生成主键 能够保证网络环境下的主键唯一性 也就能够保证在不同数据库及不同服务器下主键的唯一性

  特点 能够保证数据库中的主键唯一性 生成的主键占用比较多的存贮空间

  Foreign GUID

  Foreign用于一对一关系中 GUID主键生成方式使用了一种特殊算法 保证生成主键的唯一性 支持SQL Server和MySQL

  Hibernate源码中几个包的作用简要介绍

  net sf hibernate *

  该包的类基本上都是接口类和异常类

  net sf hibernate cache *

  JCS的实现类

  net sf hibernate cfg *

  配置文件读取类

  llection *

  Hibernate集合接口实现类 例如List Set Bag等等 Hibernate之所以要自行编写集合接口实现类是为了支持lazy loading

  nnection *

  几个数据库连接池的Provider

  net sf hibernate dialect *

  支持多种数据库特性 每个Dialect实现类代表一种数据库 描述了该数据库支持的数据类型和其它特点 例如是否有AutoIncrement 是否有Sequence 是否有分页sql等等

  net sf hibernate eg *

  Hibernate文档中用到的例子

  net sf hibernate engine *

  这个包的类作用比较散

  net sf hibernate expression *

  HQL支持的表达式

  net sf hibernate hq *

  HQL实现

  net sf hibernate id *

  ID生成器

  net sf hibernate impl *

  最核心的包 一些重要接口的实现类 如果Session SessionFactory Query等

  net sf hibernate jca *

  JCA支持 把Session包装为支持JCA的接口实现类

  net sf hibernate jmx *

  我不懂JMX 只知道JMX是用来编写App Server的管理程序的 大概是JMX部分接口的实现 使得App Server可以通过JMX接口管理Hibernate

  net sf hibernate loader *

  也是很核心的包 主要是生成sql语句的

  net sf hibernate lob *

  Blob和Clob支持

  net sf hibernate mapping *

  hbm文件的属性实现

  tadata *

  PO的Meta实现

  net sf hibernate odmg *

  ODMG是一个ORM标准 这个包是ODMG标准的实现类

  net sf hibernate persister *

  核心包 实现持久对象和表之间的映射

  net sf hibernate proxy *

  Proxy和Lazy Loading支持

  net sf hibernate ps *

  该包是PreparedStatment Cache

  net sf hibernate sql *

  生成JDBC sql语句的包

  net sf hibernate test *

  测试类 你可以用junit来测试Hibernate

  net sf hibernate tool hbm ddl *

  用hbm配置文件生成DDL

  net sf hibernate transaction *

  Hibernate Transaction实现类

  net sf hibernate type *

  Hibernate中定义的持久对象的属性的数据类型

  net sf hibernate util *

  一些工具类 作用比较散

  net sf hibernate xml *

cha138/Article/program/Java/ky/201311/28253

相关参考

知识大全 Hibernate 3注释简介

开源技术:Hibernate3注释简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在过去几年

知识大全 关于Hibernate框架的简介

关于Hibernate框架的简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  应用程序的分层体

知识大全 框架Hibernate Validator 简介

框架HibernateValidator简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  用A

知识大全 Hibernate3.1与Hibernate3.2

Hibernate3.1与Hibernate3.2  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 hibernate的性能优化

  Hibernate是对JDBC的轻量级封装因此在很多情况下Hibernate的性能比直接使用JDBC存取数据库要低然而通过正确的方法和策略在使用Hibernate的时候还是可以非常接近直接使用JD

知识大全 Hibernate宏观内容

Hibernate宏观内容  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hibernate执行

知识大全 Hibernate基础详细分析

Hibernate基础详细分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hibernate

知识大全 第一个Hibernate应用

精通Hibernate:第一个Hibernate应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 Hibernate包作用详解

Hibernate包作用详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hibernate一

知识大全 Hibernate的批量处理

Hibernate的批量处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hibernate批