在开始学hibernate之前,一直就有人说:Hibernate并不难,无非是对JDBC进一步封装。一句不难,难道是真的不难还是眼高手低?

如果只是停留在使用的层面上,我相信什么技术都不难,看看别人怎么做的,你也可以很快上手。

这难道是学习的最终目的吗?

不是,绝对不是。我们需要了解这门技术的基本概念,它到底是什么,它是干什么的,它有什么优缺点。下面我就带领大家一起回顾一下Hibernate:

什么是Hibernate?

Hibernate,翻译过来是冬眠的意思,正好现在已经进入秋季,世间万物开始准备冬眠了。其实对于对象来说就是持久化。

扫盲--------------------------------------------------------------------------------------------------------

持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。

持久化是将程序数据在持久状态和瞬时状态间转换的机制。

JDBC就是一种持久化机制。文件IO也是一种持久化机制。

日常持久化的方法:
1、将鲜肉冷藏,吃的时候再解冻的方法也是。
2、将水果做成罐头的方法也是。

结束----------------------------------------------------------------------------------------------------------

我们从三个角度理解一下Hibernate:

一、Hibernate是对JDBC进一步封装

原来没有使用Hiberante做持久层开发时,存在很多冗余,如:各种JDBC语句,connection的管理,所以出现了Hibernate把JDBC封装了一下,我们不用操作数据,直接操作它就行了。

二、我们再从分层的角度来看

我们知道非常典型的三层架构:表示层,业务层,还有持久层。Hiberante也是持久层的框架,而且持久层的框架还有很多,比如:IBatis,Nhibernate,JDO,OJB,EJB等等。

三、Hibernate是开源的一个ORM(对象关系映射)框架

ORM,即Object-Relational Mapping,它的作用就是在关系型数据库和对象之间做了一个映射。从对象(Object)映射到关系(Relation),再从关系映射到对象。这样,我们在操作数据库的时候,不需要再去和复杂SQL打交道,只要像操作对象一样操作它就可以了(把关系数据库的字段在内存中映射成对象的属性)。

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是一个没有侵入性的框架,没有侵入性的框架我们称为轻量级框架。

对比Struts的Action和ActionForm,都需要继承,离不开Struts。Hibernate不需要继承任何类,不需要实现任何接口。这样的对象叫POJO对象。

4、Hibernate代码测试方便。

5、提高效率,提高生产力。

缺点:

1、使用数据库特性的语句,将很难调优

2、对大批量数据更新存在问题

3、系统中存在大量的攻击查询功能

总结:

Hibernate可以使我们采用对象化的思维操作关系型数据库。这篇博文最主要的目的是从整体上认识Hibernate,内容可能会有点空,不是特别详细,但是后面会有更加针对性的博文进行讲解。敬请期待。

你们都是有经验的开发人员
 
 

Hibernate基本原理(一)的更多相关文章

  1. (Hibernate进阶)Hibernate基本原理(一)

    在开始学hibernate之前,一直就有人说:Hibernate并不难,无非是对JDBC进一步封装.一句不难,难道是真的不难还是眼高手低? 如果只是停留在使用的层面上,我相信什么技术都不难,看看别人怎 ...

  2. 【SSH进阶之路】Hibernate基本原理(一)

    在开始学Hibernate之前,一直就有人说:Hibernate并不难,无非是对JDBC进一步封装.一句不难,难道是真的不难还是眼高手低? 如果只是停留在使用的层面上,我相信什么技术都不难,看看别人怎 ...

  3. Hibernate基本原理

    一.Hibernate是对JDBC进一步封装 原来没有使用Hiberante做持久层开发时,存在很多冗余,如:各种JDBC语句,connection的管理,所以出现了Hibernate把JDBC封装了 ...

  4. 【SSH系列】-- hibernate基本原理&&入门demo

        什么是hibernate?      hibernate在英文中是冬眠的意思,当冬季来临,世界万物开始准备冬眠,但是程序猿这种动物好像不冬眠,因为需求变了,要改bug,冬眠,对于对象来说就是持 ...

  5. Hibernate基本原理理解

    什么是Hibernate? Hibernate,翻译过来是冬眠的意思,正好现在已经进入秋季,世间万物开始准备冬眠了.其实对于对象来说就是持久化. 扫盲------------------------- ...

  6. (Hibernate进阶)Hibernate系列——总结篇(九)

    这篇博文是hibernate系列的最后一篇,既然是最后一篇,我们就应该进行一下从头到尾,整体上的总结,将这个系列的内容融会贯通. 概念 Hibernate是一个对象关系映射框架,当然从分层的角度看,我 ...

  7. (Hibernate进阶)Hibernate搭建开发环境+简单实例(二)

    hibernate是非常典型的持久层框架,持久化的思想是非常值得我们学习和研究的.这篇博文,我们主要以实例的形式学习Hibernate,不深究Hibernate的思想和原理,否则,一味追求,苦学思想和 ...

  8. 【持久化框架】Mybatis与Hibernate的详细对比

        前言 这篇博文我们重点分析一下Mybatis与hibernate的区别,当然在前面的博文中我们已经深入的研究了Mybatis和Hibernate的原理. Mybatis [持久化框架]Myba ...

  9. 【SSH进阶之路】Hibernate映射——多对一单向关联映射(四)

    [SSH进阶之路]Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心,採用对象化的思维操作关系型数据库. [SSH进阶之路]Hibernate搭建开发环境+简单实例 ...

随机推荐

  1. Android 布局详解 -三表格布局(TableLayout)以及重要属性

              TableLayout跟TableRow 是一组搭配应用的布局,TableLayout置底,TableRow在TableLayout的上方,而Button.TextView等控件就 ...

  2. 【js】js中的||和&&

    逻辑与&&和逻辑或||操作符可以应用于任何类型的操作数,而不仅仅是布尔值. 几乎所有语言中||和&&都遵循“短路”原理, 如&&中第一个表达式为假就不会 ...

  3. 摘:ClickOnce部署

    ClickOnce部署 http://www.cnblogs.com/weixing/p/3358740.html#undefined (1):一些发布方式 ClickOnce是什么玩意儿,这个问题嘛 ...

  4. C语言中的指针和数组

    下面的内容节选自由我所执笔的会议记录.对于本文的不足之处,各位可以提出自己的看法. Q1:指针和数组到底是怎么一回事? A:指针和数组有本质的不同.指针就是一个内存地址,在32位系统下,一个指针永远占 ...

  5. GO1.6语言学习笔记1-基础篇

    一.GO语言优势   可直接编译成机器码,Go编译生成的是一个静态可执行文件,除了glibc外没有其他外部依赖 静态类型语言,但是有动态语言的感觉 语言层面支持并发.Goroutine和channel ...

  6. 开发Yii2过滤器并通过behaviors()行为调用(转)

    在Yii2的几乎每个controller中,我们都会看到一个函数behaviors(),通常,我们用这个函数来配置控制器的权限,例如:public function behaviors()    {  ...

  7. Wavenet运行

    作者:桂. 时间:2017-05-10  19:17:32 链接:http://www.cnblogs.com/xingshansi/p/6832219.html 一.环境 python3.5 Win ...

  8. nexus代理地址整理

    为给大家提供方便构建开源软件,分享下自己研究一些开源软件的时候,为方便构建搭建的nexus仓库以及代理地 名称 地址 apache-content-releases https://repositor ...

  9. Is "UNION ALL" Always Better Than "UNION"? Watch Out!

    无论是教科书还是平常的实践都告诉我们 - “尽量避免用UNION,尽可能用UNION ALL替代”. 原因很简单,UNION会对结果集进行排序去重操作,这是一个很消耗资源的操作. 但是,今天碰到了一个 ...

  10. [na]出口选路pbr小实验视频

    什么是策略路由? 一般都是部署在出口路由器,用于路径强制分发的, 优先级高于路由表. 策略路由小实验视频 这个是读书时候录的一个策略路由小实验