接口可以近似地分为如下几类:
由应用调用以完成基本的CRUD和查询操作的接口。这些接口是应用的业务/控制逻辑对Hibernate的主要的依赖点。它们包括Session,Transaction和Query。
由应用的底层代码调用以配置Hibernate的接口,最重要的是Configuration类。
允许应用对Hibernate内部出现的事件进行处理的回调接口,例如Interceptor,Lifecycle和Validatable接口。
允许对Hibernate强大的映射功能进行扩展的接口, 例如UserType ,CompositeUserType和IdentifierGenerator。这些接口由应用的底层代码实现(如果需要的话)。
Configuration
正如其名,Configuration 类负责管理Hibernate 的配置信息。Hibernate 运行时需要
获取一些底层实现的基本信息,其中几个关键属性包括:
1、数据库URL
2、数据库用户
3、数据库用户密码
4、数据库JDBC驱动类
1、 数据库dialect,用于对特定数据库提供支持,其中包含了针对特定数据库特性的实现,如Hibernate数据类型到特定数据库数据类型的映射等。
当然,还有指定Hibernate映射文件的位置。(*.hbm.xml)。
Hibernate配置有两种方法:
一、 属性文件配置。默认文件名是hibernate.properties。调用代码:
Configuration config = new Configuration();
二、 XML文件配置。默认文件名是hibernate.cfg.xml。
Configuration config = new Configuration().configure();
SessionFactory:应用程序从SessionFactory(会话工厂)里获得Session(会话)实例。它打算在多个应用线程间进行共享。通常情况下,整个应用只有唯一的一个会话工厂——例如在应用初始化时被创建。然而,如果你使用Hibernate访问多个数据库,你需要对每一个数据库使用一个会话工厂。
会话工厂缓存了生成的SQL语句和Hibernate在运行时使用的映射元数据。它也保存了在一个工作单元中读入的数据并且可能在以后的工作单元中被重用(只有类和集合映射指定了使用这种二级缓存时才会如此)。
SessionFactory sessionFactory = config.buildSessionFactory();
Session(会话):该接口是Hibernate使用最多的接口。Session不是线程安全的,它代表与数据库之间的一次操作。Session通过SessionFactory打开,在所有的工作完成后,需要关闭:它的概念介于Connection和Transaction之间。我们可以简单的认为它是已经装载对象的缓存或集合的一个独立工作单元。我们有时也称Session为持久化管理器,因为它是与持久化有关的操作的接口。
Hibernate会话并不是线程安全的因此应该被设计为每次只能在一个线程中使用。Hibernate会话与Web层的HttpSession没有任何关系。
Session session = sessionFactory.openSession();
Transaction:事务将应用代码从底层的事务实现中抽象出来——这可能是一个JDBC事务,一个JTA用户事务或者甚至是一个公共对象请求代理结构(CORBA)——允许应用通过一组一致的API控制事务边界。这有助于保持Hibernate应用在不同类型的执行环境或容器中的可移植性。
Transaction trans = session.beginTransaction ();
Query: Query(查询)接口允许你在数据库上执行查询并控制查询如何执行。查询语句使用HQL或者本地数据库的SQL方言编写。
Query query = session.createQuery(“from User”);
Lifecycle:Lifecycle接口提供了一些回调方法,可以让持久化对象在save或load之后,或者在delete或update之前进行必要的初始化与清除步骤。
public interface Lifecycle {
public boolean onSave(Session s) throws CallbackException; (1)
public boolean onUpdate(Session s) throws CallbackException; (2)
public boolean onDelete(Session s) throws CallbackException; (3)
public void onLoad(Session s, Serializable id); (4)
}
(1) onSave - 在对象即将被save或者insert的时候回调
(2) onUpdate - 在对象即将被update的时候回调(也就是对象被传递给Session.update()的时候)
(3) onDelete - 在对象即将被delete(删除)的时候回调
(4) onLoad - 在对象刚刚被load(装载)后的时候回调
Validatable: 该接口是合法性检查的回调。如果持久化类需要在保存其持久化状态前进行合法性检查,它可以实现下面的接口:
public interface Validatable {
public void validate() throws ValidationFailure;
}
如果发现对象违反了某条规则,应该抛出一个ValidationFailure异常。在Validatable实例的validate()方法内部不应该改变它的状态。
和Lifecycle接口的回调方法不同,validate()可能在任何时间被调用。应用程序不应该把validate()调用和商业功能联系起来。
Interceptor: Interceptor接口提供从session到你的应用程序的回调方法,让你的程序可以观察和在持久化对象保存/更改/删除或者装载的时候操作它的属性。一种可能的用途是
用来监视统计信息。比如,下面的Interceptor会自动在一个Auditable创建的时候设置其createTimestamp,并且当它被更改的时候,设置其lastUpdateTimestamp属性。
UserType: 开发者创建属于他们自己的值类型也是很容易的。比如说,你可能希望持久化java.lang.BigInteger类型的属性,持久化成为VARCHAR字段。Hibernate没有内置这样一种类型。自定义类型能够映射一个属性(或集合元素)到不止一个数据库表字段。比如说,你可能有这样的Java属性:getName()/setName(),这是java.lang.String类型的,对应的持久化到三个字段:FIRST_NAME, INITIAL, SURNAME。 要实现一个自定义类型,可以实现net.sf.hibernate.UserType或net.sf.hibernate.CompositeUserType中的任一个,并且使用类型的Java全限定类名来声明属性。请查看net.sf.hibernate.test.DoubleStringType这个例子,看看它是怎么做的。
<property name="twoStrings" type="net.sf.hibernate.test.DoubleStringType">
<column name="first_string"/>
<column name="second_string"/>
</property>
注意使用<column>标签来把一个属性映射到多个字段的做法。
[color=blue][/color]
分享到:
相关推荐
http://blog.csdn.net/e421083458/article/details/8794127 该源码为Hibernate教程配套源码
hibernate注入的三种方式
Hibernate的核心接口与类
使用hibernate框架,面向接口进行dao层的设计,是通用的底层架构.
2.2.4 切换到Hibernate接口 2.3 反向工程遗留数据库 2.3.1 创建数据库配置 2.3.2 定制反向工程 2.3.3 生成Java源代码 2.4 与Java EE服务整合 2.4.1 与JTA整合 2.4.2 JNDI绑定的...
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。
hibernate数据库访问接口设计
关于hibernate核心接口的描述,其中能加深对hibernate的理解
Hibernate的五个核心接口 Configuration SessionFactory Session Transcation Query和Criteria
hibernate@注解方式配置实体类时,利用javadoc接口生成数据库表及字段的注释说明,支持oracle、sqlserver、db2、mysql数据库。因用到java\lib\tools.jar,需要将该jar放入工程lib下(或者tomcat\lib下、或加入...
最近高清API帮助文档 所有hibernate接口,配置文件,属性,参数全都有!初学者的宏保书!
hibernate3.3.1接口实现包 slf4j-log4j12-1.5.2
Hibernate曾删改查接口实现,拿过来就可以直接用。
Configuration接口 Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。 ...
封装hibernate统一操作接口 简易API
Hibernate HQL命名参数和Query接口的分页 Hibernate HQL命名参数和Query接口的分页
slf4j-1.5.8.rar Hibernate日志接口
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java...Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。
有CXF接口开发的技术,也有CXF与Spring结合的实现,与数据库访问用到了Hibernate的注解,虽然只有一个添加功能,相信对学习这方面的朋友还是有帮助的。
Session是Hibernate中应用最频繁的接口,Session也被称为持久化管理器,它负责所有的持久化工作,负责管理持久化对象的生命周期,提供第一级别的高级缓存来保证持久化对象的数据与数据库同步