当用Hibernate开发基于持久层的应用时,第一件事情就是熟悉其编程接口。一下6个核心接口几乎在开发中都会用到,通过这些接口,不仅可以存储和获得持久对象,还能够进行事务控制。
1、Session接口
数据库连接与事物管理的一种会话接口,因此要访问数据并开始一个会话的时候都会采用Session接口。Hibernate通过工厂模式来创建这个接口,但是他并不是线程安全的,因此在设计使用中,通常会采用一个线程创建一个Session的设计方式。
Session具有操作持久逻辑的能力,它能够存储对象到数据库,也能够从数据库中获取他们。
2、SessionFactory接口
SessionFactory是创建Session的工厂,应用中所有需要创建Session的地方都会使用SessionFactory来创建,他是线程安全的。通常为每个都要使用的数据库资源建立一个SessionFactory。
3、Configuration接口
Configuration接口用于对Hibernate配置,他表示java对象与数据库表格映像的集合,并用于建立SessionFactory,之后Configuration就没有作用了。
例如:Configuration cfg = new Configuration().addFile("Item.hbm.xml");
SessionFactory sessions = cfg.buildSessionFactory();
4、Transaction接口
Transaction接口是一个可选的API(应用程序接口),可以选择不使用这个接口,取而代之的是Hibernate的设计者自己编写的底层事务处理代码。Hibernate是对JDBC的轻量级对象封装,Hibernate本身是不具备Transaction处理功能的,Hibernate的Transaction实际上是底层的JDBC Transaction的封装,或者是JTA Transaction的封装。即Transaction接口是对实际事物实现的一个抽象,这些实现包括JDBC的事物、JTA中的UserTransaction,甚至是CORBA(通过对象请求代理程序体系结构)事物。
例如:使用JDBC Transaction的时候
Session session = sessions.openSession();还有一个getCurrentSession是获取当前线程的。
Transaction tx = session.beginTransaction();
5、Query和Criteria接口
Query和Criteria接口是Hibernate的查询接口,用于向数据库查询对象以及控制执行查询的过程。Query接口让用户方便的对数据库及持久对象进行查询,他可以有两种表达方式:HQL语言或本地数据库的SQL语句。可以通过Query接口来及进行查询,通过它进行参数化查询,而不必每次填写完整的HQL语句。
6、Callback接口
当一个对象发生了特定的事件,例如对象被加载、保存、更新或删除,Hibernate应用可以通过回调(Callback)接口来响应这一事件。回调接口按实现方式可分为以下两类。
lifecycle和Validatable接口:由持久化类来实现这两个接口。Lifecycle接口使持久化类的实例能响应被加载、保存、更新或删除的事件,Validatable接口是持久化类的实例在被保存之前进行数据验证。这种方式强迫持久化类必须实现Hibernate的特定接口,使Hibernate API渗透到持久化类中,但会影响持久化类的可移植性,因此不值得推荐。
Interceptor接口:不必有持久化类来实现Interceptor接口。应用程序可以定义专门实现Inerceptor接口的类,Interceptor实现类负责响应持久类的实例被加载保存、更新或删除的事件。