zoukankan      html  css  js  c++  java
  • 【SSH进阶之路】Hibernate基本原理(一)

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

  • 相关阅读:
    #特征方程,dp,快速幂#洛谷 4451 [国家集训队]整数的lqp拆分
    #状压dp,贪心#CF1316E Team Building
    #线段树,欧拉函数#CF1114F Please, another Queries on Array?
    #启发式合并,链表#洛谷 3201 [HNOI2009] 梦幻布丁
    #树状数组#洛谷 4113 [HEOI2012]采花
    #链表#洛谷 3794 签到题IV
    #矩阵乘法,斐波那契#洛谷 2544 [AHOI2004] 数字迷阵
    #dp#洛谷 4399 [JSOI2008]Blue Mary的职员分配
    #同余最短路#洛谷 3403 跳楼机
    #网络流,分层图#洛谷 4400 [JSOI2008] Blue Mary的旅行
  • 原文地址:https://www.cnblogs.com/Jeely/p/11957147.html
Copyright © 2011-2022 走看看