hibernate学习之Hibernate API

1. Hibernate Api分类

1)提供访问数据库的操作(如保存,更新,删除,查询)的接口。这些接口包括:Session, Transaction,,Query接口。

        2)由于配置Hibernate的接口:Configuration。

  3)使应用程序拦截Hibernate内部发生事件的接口,并作出相应的回应。这些接口包括:Interceptor, LoadEventListener,SaveEventListener。

4)用于扩展Hiberante功能的接口。

Hibernate内部封装了JDBC,JTA(java transaction api), JNDI(Java Naming and Directory Interface)。

2. Hibernate核心接口

1)Configuration接口

配置Hibernate, 根启动Hibernate,创建SessionFactory对象。

2)SessionFactory接口

a:初始化Hibernate,充当数据库存储源的代理,创建Session对象。
       
       b:线程安全的,一个SessionFactory对应一个数据源对象。

       c:重量级的(需要一个很大的缓存来存放预定义的SQL和映射元数据),不能随意销毁和创建。

3) Session接口

a:负责保存,更新,删除,查询对象。不是线程安全的。

    b:不是线程安全的,应避免多个线程同时访问同一个session。

    c:轻量级的。

4) Transaction接口

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

5) Query和Criteria接口

Hibernate查询接口,用于执行数据库查询。

a:Query实例封装了一个HQL(Hibernate Query Language)查询语句,HQL与SQL查询语句类似,但是是面向对象的,使用的是类名和类的属性名,而不是表名和表

       的属性名。

  b: Criteria接口完全封装了基于字符串形式的查询语句,比HQL更加的面向对象,更擅长于执行动态查询。


6) 事件处理接口

当程序通过Hibernate来加载,保存,更新,删除对象时,会触发Hibernate的拦截器及事件监听器作出相应的响应。

a:事件及事件监听接口

在Hibernate api中,针对每一种事件都有相应的事件监听器,如加载对象会触发LoadEvent事件,该事件由LoadEventListener来处理。

b:Interceptor接口

用户可定义实现Interceptor接口的类,实现类负责响应持久化类的实例被加载,保存,更新,删除的时间。

7)可扩展的接口

Hibernate提供的多数功能时可配置的,允许用户选择适当的Hibernate的内置策略,如配置数据库的方言属性:Dialect

如果hibernate的内置策略无法满足要求时,hibernate孕育用户以实现接口的方式,定义客户化的策略。

a:定义主键生成策略:IdentifierGenerator接口

b:定制本地SQL方言:Dialect抽象类

c:定制缓存机制:Cache和Cache Provider接口

d:定制JDBC连接管理:ConnectionProvider

e:定制事务管理:TransactionFactory,Transaction,和TransactionManagerLookup接口

  f:定制属性访问策略:PropertyAccessor接口

g:创建代理:ProxyFactory接口

h:定制客户化映射类型:UserType和CompositeUserType接口

原文地址:https://www.cnblogs.com/marcotan/p/4256959.html