Hibernate API 简介:
访问数据库操作的接口包括:Session,Transaction,和Query
配置Hibernate的接口:Configuration
同调接口,使应用程序接受Hibernate内部发生的事件,做出相应的回应,这些接口包括:Interceptor,Lifecycle,Validatable接口
用于扩展Hibernate的功能的接口,UserType,CompositeUserType和IdentifierGenerator接口,需要的话,应用程序可以扩展这些接口
Hibernate内部封装了JDBC,JTA(JAVA Transaction(交易) API)和JNDI(Java Naming and Directory(目录) Interface)
JDBC提供底层的数据访问操作,只要用户提供了相应的JDBC驱动程序,Hibernate可以访问任何一个数据库系统,JNDI和JTA使Hibernate能后和J2EE
应用服务器集成
所谓轻量级的封装是因为Hibernate并没有完全封装JDBC,Java应用既可以通过Hibernate API访问数据库,还可以绕过Hibernate API,直接通过JDBC API来访问数据库
Hibernate的核心接口:
所有的Hibernate应用都会访问Hibernate的5个核心接口:
Configuration接口: 配置Hibernate且根启动Hibernate,Hibernate应用通过Configuration实例来指定对象-关系映射文件的位置或者动态配置Hibernate的属性,创建SessionFactory对象
SessionFactory接口:初始化Hibernate,充当数据存储源的代理,一个SessionFactory实例对应一个数据存储源,SessionFactory有以下特点:它是线程安全的,也就是说它的同一个
实例可以被应用的多个线程共享, SessionFactory是一个重量级的,是因为它需要一个很大的缓存,用来存放预定义的SQL语句以及映射元数据等,创建Session对象
Session接口:Session也被称为持久化管理器,负责保存,更新,删除,加载和查询对象.(Hibernate中的Session和JAVA Web中的HttpSession 是没有任何关系的)
Transaction:管理事务,是Hibernate的数据库事务接口,它对底层的事务接口做了封装,底层的事务接口包括: JDBC API,JTA,CORBA(Common Object Request Broker Architecture) API
Query和Criteria接口:执行数据库查询,以及控制执行查询的过程,Query实例包装了一个HQL查询语句,但是HQL查询语句是面向对象的,它引用类名及类的属性名,而不是表名及表的字段名,
Cruterua接口完全封装了基于字符串形式的查询语句,比Query接口更加面向对象,Criteria接口擅长执行动态查询
回调接口:
当一个对象发生了特定的事件,如删除,保存 等,Hibernate应用可以通过回调来响应,回调接口实现方式可以分为两类:
Lifecycle和Validatable接口:由持久化类来实现这两个接口,Lifecycle接口使持久化类的实例能够响应删除,保存等事件,Validatable接口使持久化类的实例在被保存之前进行数据验证,
而Validatable接口不用由持久化类来实现,应用程序可以定义专门实现Interceptor接口的类,Interceptor实现类负责响应持久化类的实例能够删除,保存等事件
Hibernate映射类型接口:
Type接口:表示Hibernate映射类型,用于把域对象映射为数据库的关系数据,Hibernate为Type接口提供了各种实现类,它们代表具体的Hibernate映射类型:
PrimitiveType类:映射JAVA基本类型,DateType映射JAVA日期类型,BinaryType映射JAVA Byte[]类型
可扩展的接口:
Hibernate提供的多数功能是可配置的,允许用户选择适当的Hibernate内置,如果Hibernate访问XXX数据库,可配置为:
hibernate.dialect=net.sf.hibernate.dialect.XXXDialect
可见,当Hibernate内置策略不能满足需求时,Hibernate循序用户实现接口或扩展特定类的方式,定义客户化的策略.Hibernate的扩展包括以下内容:
定制主键的生成策略:IdentifierGenerator接口.
定制本地SQL方言:Dialect抽象类.
定制JDBC连接管理:ConnectionProvider接口.
定制事务管理:TransactionFactory,Transaction和TransactionManagerLookup接口.
定制ORM策略:ClassPersister接口.
定制属性访问策略:PropertyAccessor接口.
创建代理:ProxyFactory接口.
定制客户化映射类型:UserType和CompositeUserType接口.

