Hibernate工作原理
Hibernate使用了J2EE架构中的如下技术:JDBC、JTA、JNDI。其中JDBC是一个支持关系操作的一个基础层;它与JNDI和JTA一起结合,使得Hibernate可以方便地集成到J2EE应用服务器中去。
在这里,我们不会详细地去讨论HibernateAPI接口中的所有方法,我们只简要讲一下每个主要接口的功能,如果你想了解得更多的话,你可以在Hibernate的源码包中的net.sf.hibernate子包中去查看这些接口的源代码。
下面我们依次讲一下所有的主要接口:
核心接口
以下5个核心接口几乎在任何实际开发中都会用到。通过这些接口,你不仅可以存储和获得持久对象,并且能够进行事务控制。
Session接口Session接口对于Hibernate开发人员来说是一个最重要的接口。然而在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。这在实际项目中确实很重要,因为在客户程序中,可能会不断地创建以及销毁Session对象,如果Session的开销太大,会给系统带来不良影响。
SessionFactory接口这里用到了一个设计模式――工厂模式,用户程序从工厂类SessionFactory中取得Session的实例。 令你感到奇怪的是SessionFactory并不是轻量级的!实际上它的设计者的意图是让它能在整个应用享。典型地来说,一个项目通常只需要一个SessionFactory就够了,但是当你的项目要操作多个时,那你必须为每个指定一个SessionFactory。SessionFactory在Hibernate中实际起到了一个缓冲区的作用,它缓冲了Hibernate自动生成的SQL语句和一些其它的映射数据,还缓冲了一些将来有可能重复利用的数据。
Configuration接口Configuration接口的作用是对Hibernate进行配置,以及对它进行启动。hibernate工作原理在Hibernate的启动过程中,Configuration类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。
Query和Criteria接口Query接口让你方便地对及持久对象进行查询,它可以有两种表达方式:HQL语言或本地的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。Criteria接口与Query接口非常类似,它允许你创建并执行面向对象的标准化查询。值得注意的是Query接口也是轻量级的,它不能在Session之外使用。
Callback接口当一些有用的事件发生时――例如持久对象的载入、存储、删除时,Callback接口会通知Hibernate去接收一个通知消息。一般而言,Callback接口在用户程序中并不是必须的,但你要在你的项目中创建审计日志时,你可能会用到它。以下是它的策略接口:
*主键的生成(IdentifierGenerator接口)
*本地SQL语言支持(Dialect抽象类)
*缓冲机制(Cache和CacheProvider接口)
*JDBC连接管理(ConnectionProvider接口)
*事务管理(TransactionFactory,Transaction,和TransactionManagerLookup接口)
*ORM策略(ClassPersister接口)
*属性访问策略(PropertyAccessor接口)
*代理对象的创建(ProxyFactory接口)
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-25140-1.html
那也不能吃
伊拉克肯定向中俄暗盟倾斜的