Hibernate - 架构


Hibernate 具有分层架构,帮助用户无需了解底层 API 即可进行操作。Hibernate 利用数据库和配置数据向应用程序提供持久性服务(和持久性对象)。

以下是 Hibernate 应用程序架构的高级视图。

Hibernate 高级视图

以下是 Hibernate 应用程序架构及其重要核心类的详细视图。

Hibernate架构

Hibernate 使用各种现有的 Java API,例如 JDBC、Java 事务 API (JTA) 和 Java 命名和目录接口 (JNDI)。JDBC 提供了关系数据库常见功能的基本抽象级别,允许 Hibernate 支持几乎所有具有 JDBC 驱动程序的数据库。JNDI 和 JTA 允许 Hibernate 与 J2EE 应用程序服务器集成。

以下部分简要描述了 Hibernate 应用程序架构中涉及的每个类对象。

配置对象

Configuration 对象是您在任何 Hibernate 应用程序中创建的第一个 Hibernate 对象。它通常在应用程序初始化期间仅创建一次。它代表 Hibernate 所需的配置或属性文件。

配置对象提供两个关键组件 -

  • 数据库连接- 这是通过 Hibernate 支持的一个或多个配置文件来处理的。这些文件是hibernate.propertieshibernate.cfg.xml

  • 类映射设置- 该组件创建 Java 类和数据库表之间的连接。

会话工厂对象

配置对象用于创建 SessionFactory 对象,该对象又使用提供的配置文件为应用程序配置 Hibernate,并允许实例化 Session 对象。SessionFactory 是一个线程安全对象,由应用程序的所有线程使用。

SessionFactory是一个重量级对象;它通常在应用程序启动期间创建并保留以供以后使用。您需要使用单独的配置文件为每个数据库提供一个 SessionFactory 对象。因此,如果您使用多个数据库,则必须创建多个 SessionFactory 对象。

会话对象

会话用于获取与数据库的物理连接。Session 对象是轻量级的,旨在每次需要与数据库交互时实例化。持久对象通过会话对象保存和检索。

会话对象不应该长时间保持打开状态,因为它们通常不是线程安全的,应该根据需要创建和销毁它们。

交易对象

事务代表数据库的一个工作单元,大多数 RDBMS 支持事务功能。Hibernate 中的事务由底层事务管理器和事务(来自 JDBC 或 JTA)处理。

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

查询对象

查询对象使用 SQL 或 Hibernate 查询语言 (HQL) 字符串从数据库检索数据并创建对象。Query 实例用于绑定查询参数、限制查询返回结果的数量,最后执行查询。

标准对象

Criteria 对象用于创建和执行面向对象的条件查询来检索对象。