Hibernate的五个核心API

来源:互联网 发布:java spring 拦截器 编辑:程序博客网 时间:2024/05/20 00:49

所有的Hibernate应用中都会访问Hibernate的5个核心接口。通过这些接口,不仅可以存储和获得持久对象,并且能够进行事务控制。 

  • Configuration接口:配置Hibernate,根启动Hibernate,创建SessionFactory对象。

  • SessionFactory接口:初始化Hibernate,充当数据存储源的代理,创建Session对象。

  • Session接口:负责保存、更新、删除、加载和查询对象。

  • Transaction接口:管理事务。

  • Query和Criteria接口:执行数据库查询。

1.Configuration 接口
  Configuration 接口的作用是对Hibernate 进行配置,以及对它进行启动。在Hibernate 的启动过程中,Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。虽然Configuration 接口在整个Hibernate 项目中只扮演着一个很小的角色,但它是启动hibernate 时所遇到的每一个对象。
2. SessionFactory 接口
  一个设计模式-工厂模式,用户程序从工厂类SessionFactory中取得Session 的实例。SessionFactory并不是轻量级的!实际上它的设计者的意图是让它能在整个应用中共享。典型地来说,一个项目通常只需要一个SessionFactory就够了,但是要操作多个数据库时,那必须为每个数据库指定一个SessionFactory。SessionFactory在Hibernate中实际起到了一个缓冲区的作用,它缓冲了Hibernate自动生成的SQL语句和一些其它的映射数据,还缓冲了一些将来有可能重复利用的数据。
3.Session 接口
  Session 接口对于hibernate 开发人员来说是一个最重要的接口。然而在Hibernate 中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。这在实际项目中确实很重要,因为在客户程序中,可能会不断地创建以及销毁Session 对象,如果Session 的开销太大,会给系统带来不良影响。但值得注意的是Session 对象是非线程安全的,因此在设计中,最好是一个线程只创建一个Session对象。
   在Hibernate 的设计者的头脑中,是将session看作介于数据连接与事务管理一种中间接口。我们可以将session想象成一个持久对象的缓冲区,Hibernate能检测到这些持久对象的改变,并及时刷新数据库。我们有时也称Session是一个持久层管理器,因为它包含这一些持久层相关的操作,诸如存储持久对象至数据库,以及从数据库从获得它们。注意,Hibernate 的session不同于JSP应用中的HttpSession。
4.Transaction接口
  Transaction接口是Hibernate的数据库事务接口,它对底层的事务接口做了封装,底层事务接口包括:JDBC API、JTA(Java Transaction API)、CORBA(Common Object Requet Broker Architecture)API
  Hibernate应用可通过一致的Transaction接口来声明事务边界,这有助于应用在不同的环境容器中移植。尽管应用也可以绕过Transaction接口,直接访问底层的事务接口,这种方法不值得推荐,因为它不利于应用在不同的环境移植。
  
5.Query 和Criteria接口
  Query和Criteria接口是Hibernate的查询接口,用于向数据库查询对象,以及控制执行查询的过程。Query实例包装了一个HQL查询语句,HQL查询语句和SQL查询语句有些相似,但HQL查询语句是面向对象的,它引用类句及类的属性句,而不是表句及表的字段句。Criteria接口完全封装了基于字符串的查询语句,比Query接口更加面向对象,Criteria接口擅长执行动态查询。
  Session接口的find()方法也具有数据查询功能,但它只是执行一些简单的HQL查询语句的快捷方法,它的功能远没有Query接口强大。

0 0