Hibernate 入门之Hibernate简介和体系结构(一)

时间:2022-08-14 09:00:48

                 

     Hibernate 是一种框架,不过它是不同于 Struts。Xwork等的MVC框架,它是一种ORM框架,与各种数据库,SQL语句打交道,是数据持久化的一种解决方案。

     Hibernate 是ORM框架,全称为Object-RaltiveDatabase-Mapping,在java对象与关系数据库之间建立某种映射,以实现存取java一般对象。 

ORM的概述

在商业化的开发中,数据持久化是比较核心的技术之一。传统的数据持久化的编程中,需要使用jdbc并配合大量的sql 语句。Connection ,Statement,ResultSet等JDBC API

与SQL语句夹在一起,开发效率比较低,后来出现DAO模式,把所以的JDBC API 和SQL语句移到DAO层,但是这样仍然变现大量的SQL语句,开发业务比较复杂,数据表繁多。由于DAO层的工作很有规律,例如在插入数据的时候只要把POJO拆成各种属性然后拼装成SQL语句就可以了,读取数据的时候,就是用SQL语句把POJO的各种属性从数据表中拿出,拼装成POJO对象就可以了。而ORM也就是做这种工作的框架,它通过配置文件或者JAVA注解把java对象映射到数据库上,自动执行SQL语句并执行。类似的框架有SUN的JDO,Oracle公司的TopLink等

Hibernate 的优点:

使用简单,功能强大,对大多数的数据库都提供支持,它可以直接操作POJO,并且是一种轻量级的抗拒,不依赖于如何容器,无论是Tomcat还是Joss,Ression,WebLogic,WebSohere下都可以使用。通过映射文件保存映射信息,这样只需要少量代码就可以完成持久化工作,以面向对象的方式编程,不用考虑数据保存形式。Hibernate 简化了JDBC 繁琐的编码Hibernate的官方网站是http://www.hibernate.org/

Hibernate的原理

Hibernate的工作原理和JDBC编程一样,通过insert 插入数据,Select 查询数据。Delete的删除数据 update的更新数据,不过hibernate充当DAO层,根据POJO与实体类的映射配置自动生产SQL语句。

 

在此提及一下数据的两种状态,瞬时态和持久状态。瞬时态就是在程序关闭之后数据就会自动消失,重新运行程序后有重新创建。持久态就是在关闭程序后不会消失,经常保存在数据库中或者磁盘上。持久化就是把保存在内存中的数据从瞬时态转换成持久状态

为了解决瞬时态到持久状态的转换,我们有两种解决方法:

1 使用JDBC手工转换

2 使用ORM框架来解决,主流框架是hibernate,JDO,TooLic

在使用ORM框架的时候,需要注意对象关系映射的问题。 对象关系映射是随着面相对软件开发而产生的。有两个特征(个人总结)

  (1) 对象和关系数据是业务实体的两种表现形式。业务实体在内存中表现为对

象,在数据库中表现为关系数据。 

(2) 两者存在一定的对应关系

  • 表-类

  • 字段-属性

  • 记录-对象:回想JDBC编程,查询一条记录时,封装成一个实体对象。查询多条记录时,对应的集合。

 Hibernate 入门之Hibernate简介和体系结构(一)

一般的ORM包括

  • 一个对持久类对象进行C(Create)R(Read)U(Update)D(Delete)操作的API

  • 一个语言或API用来规定与类和类属性相关的查询(HQL)

  • 一个规定mappingmetadata的工具:元数据,可以实现两个方向的自动转换。

     下面我们来看一下Hibernate的体系结构,如图
Hibernate 入门之Hibernate简介和体系结构(一)


从上面我们可以看出Hibernate的使用数据库和配置信息来为应用程序提供持久化的服务,由于Hibernate的十分灵活,所以我们描述两种极端。。“轻型”体系结构要求应用程序自己提供jdbc连接并管理自己的事务。这个是Hibernate API的最小子集。如图

Hibernate 入门之Hibernate简介和体系结构(一)

"全面解决"的体系方案,要求应用程序从jdbc/jta APT 中抽象出来,让Hibernate 全面操作这个细节。

定义如下:

Hibernate 入门之Hibernate简介和体系结构(一)