Hibernate学习之体系结构

引言

       上篇文章,我们相当于做了一个小的实验其中有两个重要的对象,一个是PO类,一个是Session.
那么什么是Hibernate Session,以及Hibernate的体系结构!以及每个对象的具体功能是什么能,我们接下来看一下。

Hibernate Session

       Hibernate Session ,只有处于Session 管理下的POJO才有持久化操作的能力。当应用程序对处于Session 管理下的POJO 实例执行操作时, Hibernate 将这种面向对象的操作转换为持久化操作!

体系结构

在这里插入图片描述
                                                         简易版
       如图所示,Hibernate 是位于JDBC 之上的一层封装,也就是说,使用Hibernate 的本质依然是依赖JDBC。Hibernate 需要一个hibernate.cfg.xml 文件,该文件用于配置Hibernate 和数据库的连接信息。除此之外,还需要在POJO 类中增加持久化注解, POJO 中的持久化注解管理持久化类和数据表、数据列之间的对应关系。
       如上文所示
在这里插入图片描述
在这里插入图片描述
       应用程序的数据访问层既可通过JPA (Java Persistence APO )执行ORM 操作,也可使用Hibernate 原生API 来执行ORM 操作。JPA 和Hibernate 的关系就是规范和实现的关系: JPA相当于ORM 规范,而Hibernate 则是ORM 规范的实现。

全新体系结构

       为了不让编程者在关注底层JDBC的操作,Hibernate推出全面解决方案。
在这里插入图片描述
                                                         全面解决方案体系结构

SessionFactory:

       这是Hibernate 的关键对象,它是单个数据库映射关系经过编译后的内存镜像,也是线程安全的。它是生成Session 的工厂,本身需要依赖于ConnectionProvider。该对象可以在进程或集群的级别上,为那些事务之间可以重用的数据提供可边的二级缓存。

Session :

       它是应用程序与持久存储层之间交互操作的一个单线程对象。它也是Hibernate 持久化操作的关键对象,所有的持久化对象必须在Session 管理下才可以进行持久化操作。此对象生存期很短。它底层封装了JDBC 连接,它也是Transaction 的工厂。Session 对象持有必边的一级缓存,在显式执行flush 之前,所有持久化操作的数据都在缓存中的Session 对象处。

持久化对象( Persistent Object )

       系统创建的POJO 实例, 一旦与特定的Sess ion 关联, 并对应数据表的指定记录, 该对象就处于持久化状态, 这一系列对象都被称为持久化对象。在程序中对持久化对象执行的修改,都将自动被转换为对持久层的修改。持久化对象完全可以是普通的JavaBeans/POJO ,唯一的区别是它们正与一个Session 关联。

瞬态对象和脱管对像

       系统通过new 关键宇创建的Java 实例,没有与Session 相关联, 此时处于瞬态。瞬态实例可能是在被应用程序实例化后,尚未进行持久化的对象。如果一个曾经持久化过的实例,如果Session 被关闭则转换为脱管状态。

事务( Transaction)

       代表一次原子操作,它具有数据库事务的概念。Hibernate 事务是对底层具体的JDBC 、JTA 以及COREA 事务的抽象。在某些情况下, 一个Session 之内可能包含多个Transaction 对象。虽然事务操作是可选的,但所有持久化操作都应该在事务管理下进行,即使是只读操作。

连接提供者( ConnectionProvider )

       它是生成JDBC 连接的工厂,它通过抽象将应用程序与底层的DataSource 或DriverManager 隔离开。这个对象无须应用程序直接访问,仅在应用程序需要扩展时使用。

事务工厂( TransactionFactory )

       它是生成Transaction 对象实例的工厂。该对象也无须应用程序直接访问。它负责对底层具体的事务实现进行封装,将底层具体的事务抽象成Hibernate 事务。
点击链接加入群聊【程序员技术交流群】:添加链接描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
   [Hibernate体系结构的概要图] Hibernate体系结构的概要图 Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心接口在任何开发都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这6个核心接口分别加以介绍。    Session接口 Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用的HttpSession。这里当使用session这个术语时,其实指的是Hibernate的session,而以后会将HttpSession对象称为用户session。   SessionFactory接口 SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。   Configuration接口 Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。 Transaction接口   Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。 Query和Criteria接口   Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值