Hibernate 简介

                **Hibernate  简介**

一.理解ORM原理
ORM是对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。实质上,ORM在业务逻辑层与数据库之间充当桥梁的作用,他对对象(Object)到关系数据(Relational)进行映射(Mapping).如图1.1所示
如图1.1所示
在hibernate框架中,ORM的设计思想得到具体的实现。Hibernate主要通过持久化类(*.java),Hibernate映射文件(* .hbm.xml)和Hibernate的配置文件( * .cfg.xml) 与数据库进行交互。其中,持久化类是操作对象的,用户描述数据表的结构,映射文件指定持久化类与数据表之间的映射关系;配置文件用于指定Hibernate的属性信息。比如数据库的连接信息等…
二.Hibernate的结构体系
首先大家请看Hibernate的一个最重要的结构体系图如下这里写图片描述
这里写图片描述
通过上图能够发现Hibernate需要一个hibernate.properties文件,该文件用于配置Hibernate和数据库连接的信息。还需要一个XML文件,该映射文件确定了持久化类和数据表、数据列之间的想对应关系.
3.Hibernate的主要接口
Hibernate的主要常用的接口有六个:Session接口SessionFactory接口Transaction接口Query接口Configuration接口Criteria接口。这六个接口在Hibernate中发挥着重要的作用。这六个接口不仅可以用来获取数据,对数据库进行持久化操作,HQL查询等,还可以进行事务的管理。
下面将对每个接口进行详细的讲解
1.SessionFactory接口
官方解释是:
这里写图片描述
SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建 Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个 SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。因为其是一个重量级的对象,所以在创建的时候会比较耗时,占用资源,但是他的线程是安全的。
2.Session接口
这里写图片描述
它是应用程序和持久存储层之间交互操作的一个单线程对象。它也是Hibernate持久化操作的关键对象,所有的持久化对象必须在Session的管理下才能够进行持久化操作。此对象的生存周期很短,其隐藏了JDBC连接,也是Transaction 的工厂。Session对象有一个一级缓存,现实执行Flush之前,所有的持久化操作的数据都在缓存中Session对象处。但是Session对象和SessionFactory对象不同,它的非线程是安全的,应该避免多个线程共享同一个Session.
3.Transaction接口
这里写图片描述
Transaction接口用于对事务的相关操作,比如事务的提交。回滚等操作
4.Query接口
5.Configuration接口
这里写图片描述
Configuration接口接口用于加载Hibernate的配置文件以及启动Hibernate,创建SessionFactory实例。在Hibernate的启动过程中,Configuration对象首先加载Hibernate的配置文件并且对其进行读取,并且根据配置创建SessionFactory对象。
6.Criteria接口
这里写图片描述
Criteria接口同样用于对数据库的查询操作。它为Hibernate的另一种方法QBC提供了方法。
三.Hibernate的实例状态
在Hibernate中,对象有三种状态:临时状态、持久状态和游离状态。
也叫:瞬时态(Transient)、持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object)。其三种状态关系图如下
这里写图片描述
下面为大家详细介绍一下实例的三种状态
1.瞬时态(Transient)
实例对象通过new关键字开辟内存空间创建Java对象,但是它并没有纳入Hibernate Session的管理。它只是一个携带信息的载体,如果没有变量对它引用,则其将会被JVM回收.它的特征在于数据库中没有与之匹配的数据,也没有在Hibernate的缓存管理之内
2.持久态(Persistent)
持久化状态对象存在与数据库中的数据对应,在Hibernate缓存的管理范围之内。当持久化对象有任何改动时,Hibernate在更新缓存时将对其更新。
3.脱管态(Detached)
当持久化对象的Session关闭后,这个对象就从持久化对象变为游离态对象。游离态对象仍然存在与数据库数据的关联,只是不在Hibernate的Session管理范围之内。如果将某个处于游离态的对象重新关联某个新的Session,则其将变回持久化对象,如果没有变量对它引用,则其将会被JVM回收。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿越清华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值