zoukankan      html  css  js  c++  java
  • Hibernate征途(二)之基础与核心

        根据我司优良传统,必然要由上向下、逐级深入,所以在钻到Hibernate细节之前,先从宏观上行欣赏一下Hibernate。为什么说是欣赏?大家可以自行查阅一下Hibernate知识外的信息,创始人和Hibernate的来源都挺有意思。

    ORM

        众所周知Hibernate是ORM框架,等等,先来说一下ORM,即Objcect Relation Mapping,对象-关系映射,我认为这是Hibernate的操作核心,这个上篇博客简单阐述了一下,学Hibernate时刻注意这点。

    优缺点

        单纯地说一个框架的优缺点没什么用处,但是当结合使用时,知道其优缺点可以将其优势最大化,同时避免使用上的错误或不当。

        优点

    • 减少了代码:框架封装了一些常用的增删改查,减少代码的同时,也意味着减少了代码的维护。
    • 更加专注:使用面向对象的思想操作数据库,使得开发人员可以不再或减少对数据库表的注意。
    • 容易移植:因为Hibernate是轻量级的框架,与容器、环境无关,使得它容易移植。
    • 容易测试:相对于传统的sql语句,存在于程序中,使得它更容易测试、调试。

        缺点

    • 大量数据库特性使用:hibernate的CRUD操作,半壁江山是以session的save()load()等实现,而这些不支持数据库特性,hql支持也有限度,况且如果使用,与hibernate容易移植的有点也相悖。
    • 大批量数据操作:当大批量操作数据时,需要大量的更新缓存,很有可能导致内存溢出(缓存部分讲解)。

    基本组件

        对应用程序而言,其Hibernate组件可以分为四部分:

    • 实体类:数据持久单位,以对象的格式保存数据。
    • 映射文件:O到R的转换规则,属性到字段、对象到表的映射。
    • 配置文件:对Hibernate整体的配置内容,如数据库、用户名等。
    • 辅助工具:hibernate及引用的工具包等。

    核心接口

        来看一张图:

        

        Interceptor和UserType不熟悉,主要来说一下在开发中常用的另外5个核心接口:Configuration、SessionFactory、Session、Transaction、Query。

    • Configuration,在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
    • SessionFactory,负责初始化Hibernate,创建session对象,它是线程安全的。
    • Session,负责执行持久化对象的CRUD操作,它不是线程安全的,当然,这个session不同于Web开发中的session
    • Transaction,负责事务相关的操作,可用可不用。
    • Query,支持HQL和SQL语句进行数据库操作。

    三种状态

        理解Hibernate的三种状态,可以更好的理解Hibernate运行机制,在此简单说明一下,会在后续博客中详细说明。一个对象在Hibernate中呈现的状态,可以分为三种,瞬时态(Transient)、持久态(Persistent)、脱管态(Detached)。看图:

            

        我从jvm回收和session管理两个方面来说一下这三个状态:

    • 瞬时态(Transient),我觉得之所以称之为瞬时态,是因为其刚被new出来,没有被引用,也没有纳入session管理,随时可能被虚拟机回收,可能只是瞬时存在。
    • 持久态(Persistent),称之为持久态,是因为它纳入session的管理之中,这样的对象具有数据库标识,与数据库记录相对应,可以长久存在。
    • 脱管态(Detached),如其名,以前被session管理过,但是已经脱离了session的管理,与瞬时态的唯一区别,我认为是它比瞬时态多一个标识,同样可以被jvm回收。

    总结

        我能说到这里,这篇博客结束了么?淡定,以上加入了我自己的理解,不是对知识单纯地罗列,是对Hibernate一个宏观的介绍,后面的博客涉及的会是细节的部分,敬请期待.

  • 相关阅读:
    软件工程逃课小组——冲刺集合
    软件工程逃课小组——冲刺日志(第一天)
    2020软件工程作业05
    软工实践第四次作业
    第三次
    第二次作业
    2020软件工程作业01
    Ubantu18安装SU(Seismic Unix)脚本
    Win10下通过anaconda搭建新环境并安装tensorflow-gpu
    Win10安装虚拟机(Ubantu18.04)并安装seismic unix(SU)
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3333750.html
Copyright © 2011-2022 走看看