Hibernate 架构
Hibernate 具有分层架构,可帮助用户在无需了解底层 API 的情况下进行操作。 Hibernate 利用数据库和配置数据为应用程序提供持久服务(和持久对象)。
以下是 Hibernate 应用程序架构的一个非常高级的视图。
以下是 Hibernate 应用程序架构及其重要核心类的详细视图。
Hibernate 使用各种现有的 Java API,如 JDBC、Java 事务 API (JTA) 和 Java 命名和目录接口 (JNDI)。 JDBC 提供了关系数据库通用功能的基本抽象级别,允许 Hibernate 支持几乎任何具有 JDBC 驱动程序的数据库。 JNDI 和 JTA 允许 Hibernate 与 J2EE 应用服务器集成。
以下部分简要描述了 Hibernate Application Architecture 中涉及的每个类对象。
Configuration 对象
Configuration 对象是我们在任何 Hibernate 应用程序中创建的第一个 Hibernate 对象。 它通常只在应用程序初始化期间创建一次。 它表示 Hibernate 所需的配置或属性文件。
Configuration 对象提供了两个关键组件
- 数据库连接 - 这是通过 Hibernate 支持的一个或多个配置文件处理的。 这些文件是 hibernate.properties 和 hibernate.cfg.xml。
- 类映射设置 - 此组件创建 Java 类和数据库表之间的连接
SessionFactory 对象
Configuration 对象用于创建 SessionFactory
对象,该对象反过来使用提供的配置文件为应用程序配置 Hibernate,并允许实例化 Session
对象。 SessionFactory
是一个线程安全的对象,由应用程序的所有线程使用。
SessionFactory
是一个重量级的对象; 它通常在应用程序启动期间创建并保留以供以后使用。 我们需要使用单独的配置文件为每个数据库创建一个 SessionFactory
对象。 因此,如果使用多个数据库,则必须创建多个 SessionFactory
对象。
Session 对象
Session 用于获取与数据库的物理连接。 Session 对象是轻量级的,设计为在每次需要与数据库交互时实例化。 持久对象通过 Session 对象进行保存和检索。
会话对象不应长时间保持打开状态,因为它们通常不是线程安全的,应根据需要创建和销毁它们。
Transaction 对象
Transaction 表示与数据库一起工作的一个单元,并且大多数 RDBMS 都支持事务功能。 Hibernate 中的事务由底层事务管理器和事务(来自 JDBC 或 JTA)处理。
这是一个可选对象,Hibernate 应用程序可能选择不使用此接口,而是在自己的应用程序代码中管理事务。
Query 对象
Query 对象使用 SQL 或 Hibernate 查询语言 (HQL) 字符串从数据库中检索数据并创建对象。 Query 实例用于绑定查询参数,限制查询返回的结果数量,最终执行查询。
Criteria 对象
Criteria 对象用于创建和执行面向对象的标准查询来检索对象。