Hibernate学习1-什么是Hibernate

来源:互联网 发布:强矩阵管理 编辑:程序博客网 时间:2024/05/02 00:12

什么是Hibernate

Hibernate,字面意思翻译过来就是冬眠的意思,对于对象来说,其实就是数据持久化(Data Persistence)。
我们知道,软件开发中经常用到三层架构模式

三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。


三层架构图
图1.三层架构图

其中的数据访问层又称数据持久层。而持久化(Persistence),即把数据保存到可永久化保存的存储设备中(如硬盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库、硬盘文件、或者XML文件中等。持久化是程序数据在持久状态和瞬态状态间转换的机制。
JDBC就是一种数据持久化机制,文件IO也是一种持久化机制。
我们可以从以下3个角度来理解Hibernate:

  1. Hibernate是对JDBC的进一步封装
    没有Hibernate时,做持久层开发使用JDBC时,要和大量的JDBC语句打交道以及接触connection的管理。而在Hibernate出现后,只需和Hibernate打交道就可以了。
  2. Hibernate是三层框架中的持久层
    Hibernate是持久层的典型框架,而且持久层的框架还包括:IBatis、Nhibernate、JDO、OJB和EJB等。
  3. Hibernate是一个开源的ORM框架
    ORM(Object-Relational Mapping)即对象关系映射,ORM框架的作用是在关系型数据库和对象之间做一个映射。从对象(Object)映射到数据库,再从数据库映射到关系。这样,我们在操作数据库的时候,无需再和复杂的SQL打交道,只要想操作对象一样操作就可了(具体做法是把关系型数据库的字段在内存中映射成对象的属性)。

Hibernate的核心

Hibernate的核心
图2.Hibernate的核心

从上图可以看出,Hibernate有六大核心接口和两个主要配置文件。图中简单给出了它们之间的关系,Hibernate所有的东西都在这儿了,我们从上到下简单认识一下:

  1. Configuration接口:负责配置并启动Hibernate;
  2. SessionFactory接口:负责初始化Hibernate;
  3. Session接口:负责持久化对象的CRUD操作;
  4. Transaction接口:负责事务;
  5. Query接口和Criteria接口:负责执行各种数据库查询。

其中Configuration接口的实例是一个启动期间的对象,一旦SessionFactory实例创建完成它就被丢弃掉了。

Hibernate的优缺点

优点:

  1. 更加对象化:以对象化的思维操作数据库,我们只需要操作对象就可以了;
  2. 移植性好:因为Hibernate做了持久层的封装,我们并不知道数据库的具体实现,所写的代码都具有很好的复用性;
  3. 非入侵性:Hibernate是一个没有入侵性的框架,它无需继承任何类,不需要实现任何接口,具有相同性质的对象称为POJO对象(POJO,Plain Ordinary Java Object的缩写,即简单的Java对象)。没有入侵性的框架我们称之为轻量级框架。
  4. 测试方便:Hibernate代码测试方便,有效提高了工作效率,提升了生产力。

缺点:

  1. 对于使用数据库的语句将很难调优;
  2. 对大批量数据的更新存在问题;
  3. 系统中存在大量的攻击查询功能。

总结

通过这篇介绍,我们了解了Hibernate的基本信息,在之后的系列文章中,我们会逐渐通过简单的demo学习Hibernate更具体的用法并展开更具体的分析。