Hibernate体系结构

Hibernate是一个ORM框架,博主并没有实际使用过这个框架,由于课程考试需要,整理一下整个体系架构,进行一个简要的归纳。虽然没有使用过这个框架,会纸上谈兵,不过可以用在其他ORM框架中积累的经验来总结一下。

参考资料

https://www.w3cschool.cn/hibernate/p7a91ie4.html

在这里插入图片描述
上图为Hibernate的体系结构图,最上层是JAVA应用程序,然后依次是持久层对象,Hibernate框架,数据库接口,数据库。

我的理解Hibernate框架能够配置不同的数据库,是建立在数据库提供了三类JTA JDBC JNDI统一接口的原因,设计思想就是依赖倒置,高层依赖于抽象的接口,而不直接依赖于数据库。JTA指的是分布式事务接口,JDBC数据库操作接口,JNDI提供了查找和访问各种命名和目录服务的通用、统一的接口。

下面对Hibernate内的对象进行介绍

配置对象

Configuration是你在任何 Hibernate 应用程序中创造的第一个 Hibernate 对象,并且经常只在应用程序初始化期间创造。它代表了 Hibernate 所需一个配置或属性文件。配置对象提供了两种基础组件。

  • 数据库连接:由 Hibernate 支持的一个或多个配置文件处理。这些文件是 hibernate.propertieshibernate.cfg.xml
  • 类映射设置:这个组件创造了 Java 类和数据库表格之间的联系。

Configuration有数据库连接信息以及JAVA类和数据库表格之间的联系等信息。

SessionFactory 对象

配置对象被用于创造一个 SessionFactory 对象,使用提供的配置文件为应用程序依次配置 Hibernate,并允许实例化一个会话对象。SessionFactory 是一个线程安全对象并由应用程序所有的线程所使用。

SessionFactory 是一个重量级对象所以通常它都是在应用程序启动时创造然后留存为以后使用。每个数据库需要一个 SessionFactory 对象使用一个单独的配置文件。所以如果你使用多种数据库那么你要创造多种 SessionFactory 对象。

SessionFactory 使用Configuration配置Hibernate,是一个重量级对象,我们使用SessionFactory来获得Session实例。

Session 对象

一个会话被用于与数据库交互的物理连接。Session 对象是轻量级的,并被设计为每次实例化都需要与数据库的交互。持久对象通过 Session 对象保存和检索。

Session 对象不应该长时间保持开启状态因为它们通常情况下并非线程安全,并且它们应该按照所需创造和销毁。

Session对象用于与数据库交互的物理链接。

Transaction 对象

一个事务代表了与数据库工作的一个单元并且大部分 RDBMS 支持事务功能。在 Hibernate 中事务由底层事务管理器和事务(来自 JDBC 或者 JTA)处理。

这是一个选择性对象,Hibernate 应用程序可能不选择使用这个接口,而是在自己应用程序代码中管理事务。

Transaction是事务相关的对象,可选的,可以不选择使用这个接口,而是在自己应用程序代码中管理事务。

Query 对象

Query 对象使用 SQL 或者 Hibernate 查询语言(HQL)字符串在数据库中来检索数据并创造对象。一个查询的实例被用于连结查询参数,限制由查询返回的结果数量,并最终执行查询。

Query对象可以用于使用SQL或HQL字符串来在数据库中来检索数据并创造对象。

Criteria 对象

Criteria 对象被用于创造和执行面向规则查询的对象来检索对象。

(看上去很绕,其实就是提供一类方法,来让你不用写原生SQL就可以查询到想要的数据。而Query用的是SQL或HQL语句,HQL其实也是SQL,但是我们用原生SQL来写其实会很不方便,比如SQL语句中有变量的问题,那么就可以使用HQL来进行一个占位,到时候通过方法设置参数,然后可以猜测这个HQL是会防止类似SQL注入的问题的。)

提纲版本

  • Configuration接口:配置Hibernate,根据其启动Hibernate,创建SessionFactory对象
  • SessionFactory接口:初始化Hibernate,充当数据存储源的代理,创建Session对象,SessionFactory是线程安全的,意味着它的同一实例可以被应用的多个线程共享,是重量级、二级缓存。
  • Session接口:负责保存、更新删除、加载和查询对象,是线程不安全的,避免多个线程共享session,是轻量级、一级缓存。
  • Transaction接口:管理事务。
  • Query和Critical接口:执行数据库的查询。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

rglkt

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

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

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

打赏作者

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

抵扣说明:

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

余额充值