文档章节

hibernate 基本原理

Daim
 Daim
发布于 2016/03/23 09:31
字数 1110
阅读 22
收藏 5

 在开始学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,内容可能会有点空,不是特别详细,但是后面会有更加针对性的博文进行讲解。敬请期待。

 

 


    本文转载自:

    Daim
    粉丝 2
    博文 32
    码字总数 7771
    作品 0
    海淀
    高级程序员
    私信 提问
    Hibernate基本原理(一)

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

    architect刘源源
    2018/01/11
    30
    0
    主持与主编一本适合大学生适用的开源技术(JavaEE)规划思路(一)

    Java 技术已经成为互联网与企业应用的主流软件技术。 各种Java Web 和 JavaEE框架技术涌现出来,其中最为會E 对于熟悉SSH 开发人员来说,其实Simple 就是提供一个更为轻量级的企业开发平台,...

    simplesns
    2012/02/16
    389
    0
    实习生-后台开发指引

    Road map: 1. 学习框架、工具的使用 2. 遵守开发规范进行编码 (待补充) 学会使用以下工具: GIT SVN MAVEN : 项目的构建、打包 了解项目 pom.xml ,setting.xml 的各个配置文件之间的关系...

    Chris
    2014/11/19
    3
    0
    hibernate hql 分页查询

    今天封装了自己的hibernateDao,主要是基于hql的,期间遇到一个问题,最后解决了,和大家分享分享 其他hibernate的查询,像QBE,QBC,这些就不说了,如果用hibernate还是hql最强大,也很容易...

    peanutmain
    2012/06/10
    14.4K
    0
    【持久化框架】Mybatis与Hibernate的详细对比

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

    sietai
    2018/05/18
    138
    0

    没有更多内容

    加载失败,请刷新页面

    加载更多

    Leetcode PHP题解--D118 350. Intersection of Two Arrays II

    D118 350. Intersection of Two Arrays II 题目链接 350. Intersection of Two Arrays II 题目分析 返回给定两个数组的交集。 思路 从数量较多的那个数组开始去另一个数组寻找是否元素存在,...

    skys215
    16分钟前
    2
    0
    从源码上分析Android View保存数据状态

    在Android开发旅途中,经常会遇到系统控件无法满足我们的视觉,交互效果,这个时候我们常常需要自己自定义控件来满足我们的需求。在这个开发探索过程中,我们不可避免得遇到View要保存状态信...

    shzwork
    17分钟前
    2
    0
    请问AD603AQ和AD603AR有什么区别?

      AD603AQ和AD603AR只是在封装上的区别,前者是双列直插式,后者是贴片式,AD603A系列的温度都是在—40摄氏度到+85摄氏度之间,AD603还有一个系列是AD603S,它的温度是在—55摄氏度到+125摄...

    仙溪
    18分钟前
    2
    0
    Linux /etc/profile 配置文件修改

    1. 执行命令: vi /etc/profile 去类似windows 配置环境变量, 2.修改完,立即生效命令: source /etc/profile

    kuchawyz
    19分钟前
    2
    0
    对于小白来说素描怎么入门?怎么学习?

    素描初学者怎样入门?初学者怎样才能画好素描绘画?画好素描绘画有哪些技巧?想必这些问题都是绘画初学者们比较伤脑筋的问题,那么初学者到底怎样才能画好素描绘画呢?今天收集整理了关于素描...

    huihuajiaocheng
    20分钟前
    2
    0

    没有更多内容

    加载失败,请刷新页面

    加载更多

    返回顶部
    顶部