Hibernate架构

阅读数:52 评论数:0

跳转到新版页面

分类

架构学

正文

一、概述

Hibernate 架构是一个多层次的架构,由一系列的对象和接口组成,它们协同工作以实现对象关系映射和数据库的持久化。

二、主要组件及作用

1、Configuration(配置)

  • Configuration 类是在 Hibernate 中用于引导和配置的第一个类。它用于加载 Hibernate 的配置文件(通常是 hibernate.cfg.xml)和映射文件。
  • 它包含数据库连接设置、事务工厂设置和类映射详情。
  • 一旦配置完成,它就用于创建 SessionFactory 实例。

2、SessionFactory(会话工厂)

  • SessionFactory 是一个线程安全的对象,通常应用中只有一个 SessionFactory 实例。它是创建 Session 对象的工厂。
  • 它是创建和管理 Session 对象的重量级对象,因为它通常会保持一些预定义的数据库连接和数据缓存,以提高性能。

3、Session(会话)

  • Session 是一个轻量级的对象,它代表数据库的一次会话,是与数据库交互的主要接口。
  • 它不是线程安全的,因此每个线程都应该有自己的 Session 实例。
  • Session 对象用于执行 CRUD 操作和查询,以及管理事务。

4、Transaction(事务)

  • Transaction 接口表示一个工作单元,它保证了事务的原子性。
  • 通过 Session 对象,可以获取 Transaction 对象,并使用它来管理事务的边界

5、Query(查询)

  • Hibernate 提供了创建和执行查询的接口,包括 HQL(Hibernate Query Language)查询和原生 SQL 查询。
  • Query 接口用于执行面向对象的查询,返回实体对象或其他形式的结果。

6、Criteria(标准查询)

  • Criteria API 是一个更加面向对象和动态的查询接口,允许开发者构建类型安全的、面向对象的查询。
  • 它用于构建复杂的搜索功能,提供了丰富的接口来进行查询的定制。

7、实体

  • 实体是普通的 Java 对象(POJO),通过注解或 XML 映射文件映射到数据库表。
  • 实体对象的实例代表数据库表中的一行。

8、Cache(缓存)

  • Hibernate 包含内置的缓存架构,提供了一级缓存(Session 缓存)和二级缓存(SessionFactory 缓存)。
  • 一级缓存是 Session 的内置特性,自动为每个 Session 实例提供缓存。
  • 二级缓存是可选的,需要配置,它跨 Session 实例存在,可以提高应用性能。

9、Interceptor(拦截器)

  • Hibernate 允许开发者注册拦截器,以便在 ORM 生命周期的特定点上拦截事件,例如保存、更新、删除等。
  • 拦截器可以用于实现自定义的业务逻辑或审计日志。

10、Connection Provider(连接提供者)

  • ConnectionProvider 是一个接口,负责封装 JDBC 连接的创建。它可以与第三方连接池集成,如 C3P0 或 HikariCP。

11、Dialect(方言)

  • Hibernate 使用方言来适应不同数据库的 SQL 变体。
  • 方言配置告诉 Hibernate 应该生成哪种类型的 SQL,以便与特定的数据库类型兼容。

12、Service Registry(服务注册)

  • 自 Hibernate 4.x 版本起,ServiceRegistry 是一个重要的概念,它保持各种服务类的引用,例如事务工厂、连接提供者等。
  • 它是一个集中的地方,用于配置和管理服务。



相关推荐