【Hibernate】从入门到精通(一)概览

今天我们来谈谈Hibernate的前世今生。


是什么?


Hibernate是一个开放源代码的对象关系映射框架,是java应用和关系数据库的桥梁。它能进行java对象和 关系数据之间的映射。Hibernate内部封装了通过jdbc访问数据库的操作,向上层应用提供面向对象的数据访问API。
这里写图片描述

上图的 演变大家都很熟悉了。右图也就是我们最基础的UBD三层结构。在我们常用的三层结构中,D层的作用就是把数据访问作为单独的持久化层。其中“数据访问”也就是指的是在应用程序中构造特定的SQL语句,然后通过JDBC API访问数据库,向数据库提交SQL 语句,从而对数据进行保存,更新,删除或查询操作。
对象的持久化,主要是指把内存中的对象形式的业务数据,转换为数据库中的关系数据形式的业务数据,把它永久保存下来。此外,广义理解,对象的持久化还包括在内存与关系数据库之间交换业务数据的各种操作,如保存,加载,更新和删除业务数据等。

对象持久化的几种模式:

a:JDBC
在业务逻辑层直接通过JDBC API 来持久化实体域对象,业务逻辑和数据访问耦合。
b:主动域对象模式
c:ORM 模式
d:JDO模式
e:CMP模式

今天我们谈论的主角hibernate 就是ORM中一款比较成熟又典型的框架之一。它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

这里写图片描述

要强调的一点是,如上文所说,hibernate是在持久化层,它将内存中的对象形式的业务数据,转换为数据库中的关系数据形式的业务数据。换句话说,java是面向对象的语言,对象模型主要概念有继承,关联,多态等;数据库是关系模型,其主要概念有表,主键,外键等。这就涉及到如何映射的问题,即我们的ORM要解决的问题
这里写图片描述

上图也就是ORM(object-relation-mapping)的来源。有了这样基本的概念。我们这时候可以 进一步了解了解hibernate的整体内容。


有什么?


    Hibernate的英文原意是冬眠,冬眠与持久化之间什么关系呢?
    Java对象存在内存中,Hibernate能够把java对象永久保存到关系数据库中。
    形象的理解,可以说hibernate能够让内存中的java对象在关系数据库中“冬眠”。

具体内容如下导图。
这里写图片描述

我将hibernate的内容分为了6个部分。

一 理论

二 工具

了解hibernate 提供的实用工具,用于在映射文件,java源文件和数据库之间进行自动转化等。

三 映射

是hibernate的核心内容。也就是如何将对象映射到数据库中的表。

四 API

对hibernate的API进行操作。

五 检索

我们如何通过hibernate检索我们所需要的数据。同时如何才能做到更有效率。

六 事务,并发,缓存,性能优化

便是在实际应用中我们必然会要处理的。即数据库的事务怎么保证,如何处理并发问题等。


优缺点


优点

(1) 对象/关系数据库映射(ORM)
它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想
(2) 透明持久化(persistent)
带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。这些对象可能是普通的JavaBeans/POJO,这个对象没有实现第三方框架或者接口,唯一特殊的是他们正与(仅仅一个)Session相关联。一旦这个Session被关闭,这些对象就会脱离持久化状态,这样就可被应用程序的任何层自由使用。(例如,用作跟表示层打交道的数据传输对象。)
(3) 事务Transaction(org.hibernate.Transaction)
应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。它通过抽象将应用从底层具体的JDBC、JTA以及CORBA事务隔离开。某些情况下,一个Session之内可能包含多个Transaction对象。尽管是否使用该对象是可选的,但无论是使用底层的API还是使用Transaction对象,事务边界的开启与关闭是必不可少的。
(4) 它没有侵入性,即所谓的轻量级框架
(5) 移植性会很好
(6) 缓存机制,提供一级缓存和二级缓存
(7) 简洁的HQL编程

缺点

(1) 针对单一对象简单的增删查改,适合于Hibernate,而在批量修改删除数据时有弱势
(2) 要使用数据库的特定优化机制的时候,不适合用Hibernate


总结


本篇博客中,我们了解到hibernate是数据持久化层的一个框架。采用的是ORM映射方式。它的主要内容包括工具,映射方式,API,检索,和事务等。同时,也了解到它的弱点是不擅长批量处理数据。

关于详细内容,我们在接下来的博客中慢慢聊,展开聊。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值