分类: Java
2009-07-31 15:43:47
hibernate的体系结构:
1.sessionfacory:
sessionfacory中保存了对应当前数据库配置的所有映射关系,它是将某个数据库的所有映射关系经过编译后保存在内存中。所以,sessionfacory的初始化过程是非常的复杂,同时也将耗费大量的资源。为了解决这个问题,hibernate的设计人员对hibernate采用了线程安全可以并发调用,实现sessionfactory的实例,然后,多个线程可以并发调用,实现hibernate实例共享。另外,sessionfactory还可以在进程或者集群的基础上,为那些事物之间可以重用的数据提供二级缓存
sessionfactory还是生成session的工厂,他在进行实例化的过程中将会简化使用到connectionprovider。
2、session
session是hibernate进行持久化操作的基础,所有的持久化都是在session的基础上完成的。hibernate中的session就相当于JDBC中的Connection对象所起的作用,它包含了与数据库建立的连接对象,同时,他也是transaction的工厂。
session是hibernate的持久化管理的核心。提供了一系列的持久化操作方法,例如,save,update,delete和find等。另外,session还持有一个针对持久化对象的一级缓存,在遍历持久化对象或者根据持久化便是查找对象的时候将会使用到。
3.transaction(事物)
transaction为用户提供了进行持久化操作的原子单元范围的设置功能。通过transaction对象,用户可以将多个持久化操作组合成一个原子操作,使这些原子操作要么能够全执行要么全都不执行,从作用上来说,它与数据库中的事物控制的概念是完全一样的。其实,也就是通过session对象产生的,所以他的生命周期要短于session的。一个session的生命周期内可能产生多个transaction对象。虽然在开发中是否使用transaction对象是可选的,但事物边界的开启和关闭则是必不可少的
4. connectionprovider
connectionprovider从名称上就可以知道它的作用,它主要用于生成于数据库建立连接的JSBC对象,同时他还作为数据库连接的缓冲池。通过connectionprovider对象实现了应用程序和底层的datasource和DriverManager的隔离,这就为使用各种不同的datasource和 DriverManager提供了可能,同时,也不会影响到应用程序的使用。
5。transactionfactory
transactionfactory是生成transaction对象的工厂,通过transactionfactory实现了对事物的封装,使其具体的实现方法与应用程序无关