码迷,mamicode.com
首页 > Web开发 > 详细

精通Hibernate——Hibernate核心接口

时间:2015-07-23 23:47:20      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:hibernate   接口   

应用程序可以通过Hibernate的API访问数据库,Hibernate API中的接口可分为以下几类:
提供访问数据库的操作(保存、更新、删除、查询)接口,这些接口包括Session、Transaction、Query接口
用于配置Hibernate的接口:Configuration
回调接口,使应用程序接受Hibernate内部发生的事件,并做出相关回应,这些接口包括:Interceptor、LifeCircle、Validatable接口
用于扩展Hibernate功能的接口
Hibernate内部封装了JDBC、JTA和JNDI。JDBC提供底层的数据库操作,只要用户提供了相应的JDBC驱动程序,Hibernate可以访问任何一个数据库系统,JNDI和JTA使Hibernate能够和J2EE应用服务器集成。下面我们来说说Hibernate的核心接口:
1、Configuration接口
Configuration对象用于配置并且根启动Hibernate。Hibernate应用通过Configuration实例来指定对象关系映射文件的位置或者动态配置Hibernate的属性,然后创建SessionFactory实例。
2、SessionFactory接口
一个SessionFactory实例对应一个数据存储源,应用从SessionFactory中获得Session实例,SessionFactory有以下特点:
他是线程安全的,这意味着他的同一个实例可以被应用的多个线程共享。
他是重量级,这意味着不能随便创建或者销毁实例。如果应用只访问一个数据库,只需要创建一个SessionFactory实例,在应用初始化的时候创建该实例,如果应用同时访问多个数据库,则需要为每一个数据库创建一个单独的SessionFactory实例。
之所以称SessionFactory是重量级的,是因为他需要一个很大的缓存,用来存放预定义的SQL语句以及映射元数据等。用户还可以为SessionFactory配置一个缓存插件,这个缓存插件被称为Hibernate的二级缓存,该缓存用来存放工作单元读过的数据,将来其他工作单元可能会重用这些数据,因此这个缓存中的数据能够被所有工作单元共享。一个工作单元通常对应一个数据库事务。
3、Session接口
Session接口是Hibernate应用使用最广泛的接口,Session也被称为持久化管理器,他提供了和持久化相关的操作,如添加、更新、删除、加载和查询对象。
session有以下特点:
不是线程安全的,因此在设计软件架构的时候,应该避免多个线程共享同一个session实例
Session实例是轻量级的,所谓的轻量级就是他的创建和销毁不需要消耗太多的资源。这意味着在程序中可以经常的创建或者销毁Session对象。例如为每一个客户请求分配单独的Session实例,或者为每个工作单元分配单独的Session实例。
session有一个缓存,称为Hibernate的一级缓存,这个Session实例的缓存只能被当前工作单元访问。
4、Transaction接口
Hibernate的数据库事务接口,他对底层事务接口做了封装,底层事务包括:
JDBC API
JTA(Java Transaction API)
CORBA(Common Object Request Broker Architecture) API
Hibernate应用可以通过一致的Transaction接口来声明事务边界,这有助于应用在不同的环境或者容器中移植
5、Query和Criteria接口
这两个是Hibernate的查询接口,用于向数据查询对象,以及控制执行查询的过程,Query实例包装了一个HQL(Hibernate Query Language)查询语句,HQL语句与SQL语句有些相似,但HQL语句是面向对象的,他引用类名以及类的属性名,而不是表名和表字段名。Criteria接口完全封装了基于字符串形式的查询语句,比Query接口面向对象,Criteria接口擅长于执行动态查询。
Session接口的find()方法也具有数据查询功能,但他只是执行一些简单的HQL查询的快捷方法,他的功能远没有query接口强大。

精通Hibernate——Hibernate核心接口

标签:hibernate   接口   

原文地址:http://blog.csdn.net/fuyuwei2015/article/details/47030391

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!