图1 Hibernate核心接口的层次架构关系
Hibernate的核心接口一共有5个,分别为:Session、
SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,
不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五的核心接口分别加以介绍。
1.Configuration
接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
a.属性文件(hibernate.properties):Configuration cfg = new Configuration();
Xml文件(hibernate.cfg.xml):Configuration cfg = new Configuration().configure();
b.当然也可以用File对象来初始化配置文件,这样就不需要非的是hibernate.cfg.xml的文件名了。如下代码:
File file=new File("d:/hibernamte2.cfg.xml");
Configuration configure = new Configuration().configure(file);
c.另外一种更常用,就是用URL,如下代码:
URL url = new URL(
http://localhost/hibernate2.cfg.xml
);
Configuration configure = new Configuration().configure(url);
重要方法:
public Configuration configure (String resource)
throws HibernateException
;在参数中指定要加载的XML格式的配置文件
public Configuration configure(URL url)
thrwos HibernateException:
public SessionFactory buildSessionFactory()
throws HiberanteExcepiton
: 根
据配置文件实例化一个新的SessionFactory对象,这个SessionFactory将是不可变的,所以在创建了SessionFactory
对象后,对Configuration对象作出的所有修改不会影响以前创建出的SessionFactory对象。
Configuration
对象的作用是除了有读取配置文件的功能,还能创建SessionFactory对象。通常,一个应用程序会创建一个Configuration对象,然后
利用Configuration实例建立唯一的SessionFactory实例,这就意味着Configuration对象只存在于系统的 初始化阶
段,然后所有的持久化操作都能通过这个唯一的SessionFactory实例来进行。
Configuration对象只有在
Hibernate 进行初始化的时候才需要创建,当使用Configuration对象的实例创建了SessionFactory对象的实例后,其配置
信息已经绑定在他返回的SessionFactory对象实例中。因此,一般情况下,得到SessionFactory对象
后,Configuration对象的使命就结束了。
2.SessionFactory
接
口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要
注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库
时,可以为每个数据库指定一个SessionFactory。
会话工厂缓存了生成的SQL语句和Hibernate在运行时使用的映射元数据。
SessionFactory sessionFactory = cfg.buildSessionFactory();
SessionFactory有以下几个特点:
1:他是线程安全的,同一个实例可以被应用的多个线程共享
2:
他是重量级的,不能随意创建和销毁他的实例,如果应用只访问一个数据库,只需要创建一个SessionFactory的实例,在应用初始化的时候创建实
例。如果应用需要访问多个数据库,那么就需要根据不同的配置文件(包括有特定数据库的配置)创建多个Configuration实例并构建与每个数据库相
对应的sessionFactory实例。
3:以后对Configuration对象势力作出的修改都不会影响已经创建好的
SessionFactory实例,如果需要使用基于改动后的Configuration实例的SessionFactory,需要从
Configuration对象中重新创建新的SessionFactory实例。
org.hibernate Interface SessionFactory
public interface SessionFactory extends Referenceable,Serializable
:创建Session,他是客户端获取Session对象的工厂
常用的方法:
public Sessioin openSession()
throws HIbernateException
:创建一个数据库连接,并把他放在Session对象中,并返回
public Session openSession(Connection connection):
创建一个Session对象,并把参数给出的 connection对象放在其中
public boolean isClosed():
判断当前SessionFactory对象是否关闭了
public void close()
throws HibernateException
关闭SessionFactory以及释放所有的SessionFactory涉及到的资源(缓存,数据库连接池等)但在调用此方法之前,应该确定没有当前对象创建的Session没有关闭
3.Session
接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库
的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非
线程
安全的。 Session
也称为持久化管理器,因为它是与持久化有关的操作接口。 Session通过SessionFactory打开,在所有的工作完成后,需要关闭。
Session session = sessionFactory.openSession();
保存用户:session.save(user);
修改用户:session.update(user);
保存或修改用户:session.saveOrUpdate(user);
删除用户:session.delete(user);
删除所有用户:session.delete(“from User ”);
Session有以下的特点
1,不是线程安全的,应该避免多个线程共享同一个Session实例
2,Session实例是轻量级的,所谓轻量级:是指他的创建和删除不需要消耗太多资源
3,Session对象内部有一个缓存,被称为Hibernate第一缓存,他存放被当前工作单元中加载的对象,每个Session实例都有自己的缓存。
org.hibernate Interface Session
public interface Session extends Serializable
: 是一个Java application 和Hibernate之间主要的运行时接口,这是执行持久化服务的中心API
主要方法:
public Transaction beginTransaction()
throws HibernateException
:返回和当前Session对象相互联系的Transaction对象(表示在数据库中重新开始一个事务)
public Transaction getTransaction()
:
返回和当前session联系的Transaction对象
public Connection connection close()
throws HibernateExcepton
:结束当前的Session对象
public void
clear()
:清空Session,清除所有保存在当前Session缓存中的实体对象,终止所有正在执行的方法(eg: save() , update() ,delete() .....)
public Serializable save(Object object)
throws HibernateException
对当前参数指定的对象进行持久化(系统会首先赋予参数对象一个标识符OID),他相当于insert语句 后面在详细介绍
public Connection connection()
throws HibernateException
得到当前Session 中包含的Connection对象。
public boolean contains(Object object)
:
判断参数给出的对象(持久化类)是否在当前Session的缓存中
public void evict(Object object)
throws HibernateException
:将参数给出的Object从当前Session对象类中删除,使这个对象从持久态变成游离态,这种状态的改变不会引起对数据库的同步,后面详细介绍
public Object load(Class theclass ,Serializable id)
throws HibernateException
返回第一个参数指定类对应的表中,第二个参数指定的行(第二个参数就是要取得对象的OID
,他对应表中主键列的值
)
public void update(Object object)
throws HibernateException
:更新一个对象到数据库中,后面在详细介绍
public void delete (Object object)
throws HibernateException
:从数据库中删除和参数指定的对象对应的记录
public Object get(Class class,Serializable id)
throws HibernateException
:和load()方法一样区别在于,如果数据库表中没有对应的记录,get()方法返回null,load()方法将报异常
4.Transaction
接口:Transaction接口负责事务相关的操作。它是可选的,可发人员也可以设计编写自己的底层事务处理代码。
它将应用代码从底层的事务实现中抽象出来——这可能是一个JDBC事务,一个JTA用户事务或者甚至是一个公共对象请求代理结构(CORBA)——允许应用通过一组一致的API控制事务边界。这有助于保持Hibernate应用在不同类型的执行环境或容器中的可移植性。
Transaction tx = session.beginTransaction();
注:
使用Hibernate进行操作时(增、删、改)必须显示的调用Transaction(默认:autoCommit=false)。
常用方法:
public void commit()
throws HibernateException
刷新当前的Session以及结束事务的工作,这个方法将迫使数据库对当前的事务进行提交
public void rollback()
throws HibernateException
:强迫回滚当前事务
public boolean isActive()
throws HibernateException
: 这个事务是否存活
5.Query
接口允许你在数据库上执行查询并控制查询如何执行。查询语句使用HQL或者本地数据库的SQL方言编写。
Query query = session.createQuery(“from User”);
Criteria
接口: 是一个直观的、可扩展的条件查询API是Hibernate的特色。org.hibernate.Criteria接口表示特定持久类的一个查询。Session
是 Criteria
实例的工厂。
- 大小: 16.8 KB
分享到:
相关推荐
在本教程中,我们将深入探讨Hibernate的核心开发接口,这些接口是Hibernate框架的基石,使得开发者能够轻松地与数据库进行交互。Hibernate是一个强大的Java对象关系映射(ORM)框架,它消除了传统SQL编程的繁琐,...
"hibernate 通用接口架构"是指利用Hibernate框架,通过设计DAO(Data Access Object)层的接口来实现业务逻辑与数据访问的解耦,从而提高代码的可复用性和可维护性。 首先,我们来理解DAO层的作用。DAO层作为业务...
"Hibernate核心接口" Hibernate 是一种流行的 Java 持久化框架,它提供了多种核心接口来实现数据的持久化操作。这些核心接口是 Hibernate 的基础组件,任何 Hibernate 应用程序都需要使用它们。下面将详细介绍这五...
### Hibernate的核心接口与类 在探索Hibernate框架的过程中,掌握其核心接口与类是至关重要的一步。Hibernate作为一种流行的Java持久层框架,提供了丰富的API来简化对象关系映射(ORM)。本文将详细阐述Hibernate的...
【hibernate知识简介】 Hibernate 是一款流行的Java持久层框架,它主要负责处理对象与关系数据库之间的映射,实现对象关系映射(ORM),从而简化Java应用中的数据存取操作。ORM 解决了面向对象编程语言与关系型...
在 Hibernate 中,数据库访问接口的设计是至关重要的,因为它提供了与数据库交互的桥梁,简化了传统的 JDBC 编程,提高了开发效率和代码的可维护性。 ### 1. Session 接口 Hibernate 的核心接口是 `Session`,它...
### Hibernate中的五个核心接口 #### 一、概述 Hibernate 是一款强大的对象关系映射(ORM)框架,它简化了 Java 应用程序与数据库之间的交互过程。通过将 Java 对象映射到数据库表中,Hibernate 提供了一种更加...
Hibernate是一款流行的Java持久化框架,它简化了数据库与对象之间的交互。在Hibernate的底层实现中,CGLIB(Code Generation Library)起到了至关重要的作用。CGLIB是一个代码生成库,它基于ASM库,但提供了更高级别...
"Hibernate曾删改查接口实现"这个主题,主要涉及的是如何利用Hibernate的核心接口进行数据的增、删、改、查操作。下面将详细讲解这些知识点。 **1. Hibernate基本概念** Hibernate是一个开源的ORM框架,它的核心是...
**Hibernate原理简介** Hibernate是一个强大的Java对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本项目旨在帮助理解Hibernate的工作流程,通过实践来深入学习其核心...
1.Hibernate持久化类:Hibernate的持久化类是一个JavaBean(pojo+相应属性的getter和setter方法),该JavaBean最好实现java.io.Serializable接口 2.Hibernate映射文件:Hibernate映射文件是Hibernate与数据库进行持久化...
【Hibernate简介及特性】 Hibernate是一个Java开发中的对象关系映射(ORM)框架,它提供了将数据库操作转化为面向对象的方式,让开发者可以更加便捷地进行数据持久化操作。Hibernate基于JDBC,但对JDBC进行了封装,...
Hibernate的五个核心接口 Configuration SessionFactory Session Transcation Query和Criteria
1. **Hibernate3简介**:Hibernate3是Hibernate项目的第三个主要版本,它提供了一种对象关系映射(ORM)解决方案,允许开发人员使用面向对象的编程模型来处理关系数据库。它的目标是减少数据库访问的复杂性,提高...
JPA、ORM和Hibernate之间的关系是:ORM是一种思想,JPA是这种思想的具体表现形式,即按照Java语法规范定义的一套标准接口,Hibernate则是这组接口的一个具体实现。 Hibernate框架的下载和配置也是Java开发人员必须...
这就是"封装Hibernate统一操作接口"的目的。 一、 Hibernate概述 Hibernate是一个开源的ORM框架,它将Java对象与关系数据库中的记录进行映射,从而避免了传统的JDBC编程的繁琐。通过Hibernate,开发者可以使用面向...
Hibernate核心思想与接口简介 Hibernate 是一个采用 ORM 机制的开源框架,核心思想是将表与表之间的操作,映射成对象和对象之间的操作,这样简化了持久层的代码,减轻了程序员的负担。ORM 是一种为了解决面向对象与...
这个压缩包文件"CXF接口Spring+Hibernate的添加完整版"提供了将这三个技术整合在一起的一个示例,特别关注了如何实现一个基于CXF的接口,并结合Spring和Hibernate来完成数据的添加操作。以下是对这些知识点的详细...
基于泛型的通用Dao接口和Hibernate的实现 基于泛型的通用Dao接口是指使用泛型来实现数据访问对象(DAO)的接口,主要是在使用 Hibernate 或 JPA 时使用。泛型可以使得DAO接口更灵活、更通用。 泛型Dao接口的优点:...