欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

从应用角度看Hibernate源码(三):Hibernate常用接口的实现 Hibernate

程序员文章站 2022-03-24 11:37:36
...
在Hibernate的源码包org.hibernate.impl下的类,是Hibernate针对自我接口的重要实现。Hibernate所有重要接口的实现都放在了这里。这里面的最重要的接口大部分由Gavin King所实现。在这些接口中最重要的要数 SessionImpl 。这个类的源码如下
java 代码
  1. public final class SessionImpl extends AbstractSessionImpl    
  2.         implements EventSource, org.hibernate.classic.Session, JDBCContext.Context {   
  3. 。。。。。。   
  4. }  

 从这个类中我们可以看出很多的事情:

(1)首先作为Session的一个实现类,应该实现org.hibernate.Session.可接口中没有。打开org.hibernate.classic.Session发现继承了org.hibernate.Session。这样就有些明白了。但为什么不直接实现呢?通过看org.hibernate.classic.Session发现,这里面实现了很多Hibernate2的一些特性。从设计理念上来讲这样设计是非常的不错的。这个接口很明显是对Hibernate2的一个过渡,等大家都使用Hibernate3后,这个接口直接去掉即可。

 (2)打开EventSource,有件非常让人困惑的事情,这个类也实现了org.hibernate.Session。这个就有些不解了,首先对于这个SessionImpl来说是不解的。这里的结构显得不是很清晰。可能这个EventSource在别的地方也用到了,这里使用EventSource只是顺手牵羊。如果大家有更好的解释可以在下面接着回复。

(3)这里的Context接口主要是对Session的事务的接口。这个接口也有些不寻常的地方,它居然是另一个类的内部接口。而且是静态的接口,这里可能是为了实现事务的同步。不过,给人的感觉不是特清楚。

总之,在实现上感觉Hibernate这个类的实现有些问题。当然,这样做也许非常的精妙。对于这个类下面有时间会接着讨论。

相关标签: Hibernate