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
是一个重要的概念,它保持各种服务类的引用,例如事务工厂、连接提供者等。 - 它是一个集中的地方,用于配置和管理服务。