hibernate核心接口,和扩展接口。回顾笔记,以前没记,现在补上,纯手工敲的。

时间:2022-09-25 21:31:25

hibernate核心接口:

所有的hibernate应用都会访问hibernate的5个核心接口

  1,Configuration接口

Configuration用于配置并且根启动Hibernate。Hibernate应用通过Configuration实例来获取对象-关系映射文件中的元数据,以及动态配置Hibernate的属性,然后创建SessionFactory实例。

  2,SessionFactory接口

一个SessionFactory实例对应一个数据存储源,应用从SessionFactory中获得Session示例。

SessionFactory有以下特点

  • 它是线程安全的,这意味着它的一个实例可以被应用中的多个线程共享。
  • 它是重量级的,这意味着不能随意创建和销毁它的实例。如果应用只访问一个数据库,只需要创建一个SessionFactory实例,在应用初始化的时候创建该实例。如果应用同时访问多个数据库,则需要为每个数据库创建一个单独的SessionFactory。之所以称它是重量级的,是因为它需要一个很大的缓存,用来存放预定于的SQL语句以及映射元数据等。用户还可以为是因为它SessionFactory配置一个缓存插件,这个缓存插件被称为Hibernate的第二级缓存,该缓存用来存放被工作单元读过的数据。将来其他工作单元可能会重用这鞋数据,因此,这个缓存中的数据能够被所有工作单元共享。一个工作单元通常对应一个数据库事物。

  3,Session接口

Session接口是Herbernate应用使用最广泛的接口。也被称为持久化管理器,它提供了持久化相关的操作,即:增删改查操作。

Session有以下特点:

  • 不是线程安全的,因此,应该避免多个线程共享同一个Session实例。
  • Session实例是轻量级的。它的创建和销毁不需要消耗太多资源。这意味着在程序中可以经常创建或销毁Session对象,如为每个客户请求分配单独的Session实例。

Session有一个缓存,被称为Hibernate的第一级缓存,它存放被当前工作单元加载的对象。每个Session实例都有自己的缓存,这个Session实例的缓存只能被当前的工作单元访问。

  4,Transaction接口

Transaction接口是Hibernate的数据库事务接口,它对底层的事务接口做了封装,底层事务接口包括:

  • JDBC API
  • JTA(Java Transaction API)
  • COBRA (Common Object Request Broker Architecture) API

Hibernate应用可通过一致的Transaction接口来申明事务边界,这有助于应用在不同的环境或容器中移植。

  5,Query和Criteria接口

Query和Criteria接口是Hibernate的查询接口,用于向数据库查询对象,以及控制执行查询的过程。Query实例包装了一个HQL(Hibernate Query Language)查询语句,HQL查询语句与SQL查询语句有些相似,但HQL查询语句是面向对象的,它引用类名及类的属性名,而不是表名或表的字段名。Criteria接口完全封装了基于字符串形式的查询语句,比Query接口更加面向对象,Criteria接口擅长于执行动态查询。

hibernate扩展接口:

  1,事件处理接口

当程序通过Hibernate来加载、保存、更新或删除对象时,会触发Hibernate的拦截器及事件监听器,做出响应的处理:

  • 事件及事件监听接口:在Hibernate API,针对每一种事件都有相应的事件监听器。比如:

加载对象会触发org.hibernate.event.LoadEvent事件,该事件由org.hibernate.event.LoadEventListener监听器处理。

保存对象会触发org.hibernate.event.saveEvent事件,该事件由org.hibernate.event.SaveEventListener监听器处理。

  • org.hibernate.Interceptor接口:应用程序可以实现Interceptor接口的类。Interceptor实现类负责响应持久化类的实例被加载、保存、更新或删除的事件。

  2,Hibernate映射类型接口

org.hibernate.type.Type接口表示Hibernate映射类型,用于把域对象映射为数据库的关系数据。Hibernate为Type接口提供了各种实现类,它们代表具体的Hibernate映射类型,例如:

  • PrimitiveType类:映射Java基本类型,PrimitiveType类包括“ByteType、ShortType、IntegerType、LongType、FloatType、DoubleType、CharacterType和BooleanType这八个子类”。
  • DateType:映射Java日期类型。
  • BinaryType:映射Byte[]类型。