Session 接口
Session 接口对于Hibernate 开发人员来说是一个最重要的接口。然而在Hibernate 中,实例
化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。这在实际项目中确实很重要,
因为在客户程序中,可能会不断地创建以及销毁Session 对象,如果Session 的开销太大,会给系
统带来不良影响。但值得注意的是Session 对象是非线程安全的,因此在你的设计中,最好是一个
线程只创建一个Session对象。
在Hibernate 的设计者的头脑中,他们将session看作介于数据连接与事务管理一种中间接口。
我们可以将session想象成一个持久对象的缓冲区,Hibernate能检测到这些持久对象的改变,并及
时刷新数据库。我们有时也称Session是一个持久层管理器,因为它包含这一些持久层相关的操作,
诸如存储持久对象至数据库,以及从数据库从获得它们。请注意,Hibernate 的session不同于JSP
应用中的HttpSession。当我们使用session这个术语时,我们指的是Hibernate 中的session,而
我们以后会将HttpSesion 对象称为用户session。
SessionFactory 接口
这里用到了一个设计模式――工厂模式,用户程序从工厂类SessionFactory中取得Session 的
实例。
令你感到奇怪的是SessionFactory并不是轻量级的!实际上它的设计者的意图是让它能在整个
应用中共享。典型地来说,一个项目通常只需要一个SessionFactory就够了,但是当你的项目要操
作多个数据库时,那你必须为每个数据库指定一个SessionFactory。
SessionFactory在Hibernate中实际起到了一个缓冲区的作用,它缓冲了Hibernate自动生成的SQL
语句和一些其它的映射数据,还缓冲了一些将来有可能重复利用的数据。
Configuration 接口
Configuration 接口的作用是对Hibernate 进行配置,以及对它进行启动。在Hibernate 的启动
过程中,Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个
SessionFactory对象。
虽然Configuration 接口在整个Hibernate 项目中只扮演着一个很小的角色,但它是启动
hibernate 时你所遇到的每一个对象。
Transaction 接口
Transaction 接口是一个可选的API,你可以选择不使用这个接口,取而代之的是Hibernate 的
设计者自己写的底层事务处理代码。 Transaction 接口是对实际事务实现的一个抽象,这些实现包
括JDBC的事务、JTA 中的UserTransaction、甚至可以是CORBA 事务。之所以这样设计是能让开
发者能够使用一个统一事务的操作界面,使得自己的项目可以在不同的环境和容器之间方便地移值。
Query 和Criteria接口
Query接口让你方便地对数据库及持久对象进行查询,它可以有两种表达方式:HQL语言或本
地数据库的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。
Criteria接口与Query接口非常类似,它允许你创建并执行面向对象的标准化查询。
值得注意的是Query接口也是轻量级的,它不能在Session之外使用。
Callback 接口
当一些有用的事件发生时――例如持久对象的载入、存储、删除时,Callback 接口会通知
Hibernate去接收一个通知消息。一般而言,Callback接口在用户程序中并不是必须的,但你要在你
的项目中创建审计日志时,你可能会用到它。
策略接口
Hibernate与某些其它开源软件不同的还有一点――高度的可扩展性,这通过它的内置策略机制
来实现。当你感觉到Hibernate 的某些功能不足,或者有某些缺陷时,你可以开发一个自己的策略来替换它,而你所要做的仅仅只是继承它的某个策略接口,然后实现你的新策略就可以了,以下是
它的策略接口:
· 主键的生成 (IdentifierGenerator 接口)
· 本地SQL语言支持 (Dialect 抽象类)
· 缓冲机制 (Cache 和CacheProvider 接口)
· JDBC 连接管理 (ConnectionProvider接口)
· 事务管理 (TransactionFactory, Transaction, 和 TransactionManagerLookup 接口)
· ORM 策略 (ClassPersister 接口)
· 属性访问策略 (PropertyAccessor 接口)
· 代理对象的创建 (ProxyFactory接口)
Hibernate为以上所列的机制分别创建了一个缺省的实现,因此如果你只是要增强它的某个策略
的功能的话,只需简单地继承这个类就可以了,没有必要从头开始写代码。
分享到:
相关推荐
`hibernate-core`是Hibernate的核心库,包含了执行ORM功能所需的主要组件。 在Hibernate-Core中,主要包含以下几个关键模块和概念: 1. **Session接口**:它是Hibernate的主要工作接口,提供了对数据库的操作方法...
3. **hibernate-jpa-2.1-api**: 提供JPA 2.1的API接口,是Hibernate与JPA交互的基础。 4. **hibernate-validator**: Hibernate的验证框架,符合JSR-303/JSR-349标准,用于数据验证,确保输入数据的正确性。 5. **...
核心的jar文件通常包括`hibernate-validator-5.0.0.CR2.jar`,它包含了验证的运行时类和注解;`javax.validation-api-1.1.0.Final.jar`,这是Bean Validation的标准API;以及可能的其他依赖,如`classmate-1.0.0.jar...
**hibernate-memcached-1.2.2.jar** 文件是这个扩展的核心库,其中包含了所有必要的类和接口,使得Hibernate能够识别并使用Memcached作为二级缓存。这个版本的hibernate-memcached已经过测试和优化,确保与1.2.2版本...
《Hibernate核心库解析:深入理解hibernate-release-4.2.4_jar.zip》 Hibernate,作为一款广泛使用的Java对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者无需直接编写SQL,就能实现对数据库的操作。...
2. **org.hibernate**:这是核心代码所在的主要包,下辖多个子包,涵盖了Hibernate的所有核心功能,如: - `configuration`:负责配置信息的读取和解析,包括XML配置文件和程序化配置。 - `entitymanager`:实现了...
Hibernate 5.2.15.Final版本的核心特性包括: 1. **对象关系映射**:Hibernate通过XML配置文件或注解将Java类与数据库表进行映射,使得数据库操作可以通过对象的增删改查方法实现,无需编写SQL语句。 2. **Session...
1. **hibernate-core.jar**:这是Hibernate的核心库,包含了所有必要的ORM功能。 2. **hibernate-entitymanager.jar**:提供了JPA的支持,包括实体管理工厂和查询API。 3. **hibernate-validator.jar**:用于进行...
此外,还有hibernate-entitymanager.jar,专注于JPA(Java Persistence API)的实现,为开发者提供了标准的ORM接口。其他的jar包如hibernate-jpa-2.0-api.jar则是对JPA 2.0规范的支持。 二、经典示例 在学习过程中...
2. **自定义验证**:如果内置的约束注解无法满足需求,可以通过实现 ConstraintValidator 接口创建自定义验证器。用户可以定义自己的验证逻辑,同时可以利用 @Constraint 注解来声明元数据。 3. **错误处理**:当...
2. Session:作为与数据库交互的主要接口,Session负责对象的持久化操作,如保存、更新、删除等。 3. Query:提供HQL(Hibernate Query Language)和JPQL(Java Persistence Query Language)来执行数据库查询,也...
`MemcachedCacheProvider`是核心缓存提供者,它继承自Hibernate的`CacheProvider`接口,负责初始化Memcached客户端并管理缓存区域。`MemcachedRegionFactory`则实现了`RegionFactory`接口,它创建并管理了具体的缓存...
2. Hibernate核心概念 - Session:它是与数据库交互的主要接口,负责持久化对象的创建、更新和删除。 - Transaction:Hibernate提供了基于JTA和JDBC的事务管理,确保数据的一致性。 - Criteria API:提供了一种更...
1. Session接口:作为与数据库交互的主要接口,Session负责保存、更新、删除和检索对象,支持事务管理和并发控制。 2. Criteria API:提供了一种比HQL更面向对象的查询方式,可以动态构建查询条件,避免硬编码SQL...
《hibernate-common-annotations.jar:Hibernate ORM框架中的核心注解库详解》 在Java世界里,ORM(Object-Relational Mapping)框架是连接数据库与应用程序的重要桥梁,而Hibernate作为其中的佼佼者,深受广大...
在实际开发中,理解并熟练运用这些核心概念和机制,可以帮助我们更高效地利用Hibernate ORM进行数据访问层的设计,减少数据库操作的复杂性,提高代码的可维护性。对于初学者,建议从简单的JAR包开始,逐步熟悉其API...
1. **Hibernate ORM核心**:这是Hibernate的核心库,包含了持久化模型、Session接口、事务管理、查询语言HQL和Criteria API等关键功能。`hibernate-core.jar`是其中最重要的一个文件,它实现了对象与数据库之间的...
2. **会话接口**:Session是Hibernate的主要工作接口,用于执行CRUD(创建、读取、更新和删除)操作,同时提供事务管理和缓存管理功能。 3. **查询语言HQL**:Hibernate Query Language(HQL)是一种面向对象的查询...
《Hibernate核心库5.2.2.Final深度解析》 Hibernate,作为Java领域中的一个重量级持久化框架,是ORM(Object-Relational Mapping)的杰出代表,它极大地简化了数据库与Java对象之间的交互,使得开发者可以专注于...
其核心库,即`hibernate-core`,是Hibernate框架的基础部分,包含了实现ORM功能的核心组件。在本文中,我们将详细探讨`hibernate-core`包中的关键知识点。 1. **对象关系映射(ORM)基础** ORM是Hibernate的核心...