主页 > 知识库 > Hibernate的JNDI绑定分析

Hibernate的JNDI绑定分析

热门标签:淮南腾讯地图标注 腾讯地图标注商户改名注册入驻 漯河办理400电话 开封便宜外呼系统报价 商丘百应电话机器人有没有效果 地图标注人员兼职 黄石智能营销电销机器人效果 怎样把地图标注出来 电话机器人的特色和创新
Hibernate的JNDI名称绑定是在net.sf.hibernate.impl.SessionFactoryObjectFactory程序里面实现的,我来分析一下Hibernate的绑定JNDI的过程:

  我们获得SessionFactory一般是这样写代码:

  Configuration conf = new Configuration().addClass(Cat.class);
  SessionFactory sf = conf.buildSessionFactory();

  首先是new Configuration()创建一个Configuration,在这个构造器里面进行配置文件(hibernate.properties)的读取工作,然后保存到一个Properties对象里面去,和JNDI相关的是这个属性:

  hibernate.session_factory_name hibernate/session_factory

  接着调用buildSessionFactory()方法,该方法检查一下配置信息,然后调用SessionFactoryImpl的一个构造器。在构造器里面注意下面两行代码:

  name = properties.getProperty(Environment.SESSION_FACTORY_NAME);
  SessionFactoryObjectFactory.addInstance(uuid, name, this, properties);

  调用了SessionFactoryObjectFactory的addInstance方法,并且把自身(SessionFactory的实例)作为参数传递。最后在addInstance方法可以看到如下代码:

  Context ctx = NamingHelper.getInitialContext(properties);
  NamingHelper.bind(ctx, name, instance);

  instance 就是SessionFactory的实例,通过读源代码,可以清楚的看到Hibernate是在conf.buildSessionFactory()的时候通过一系列类方法调用,把创建的SessionFactory实例绑定到配置文件(hibernate.properties)中 hibernate.session_factory_name属性指定的名称上的,因此可见Hibernate自身是具有JNDI的动态绑定功能的。但是Hibernate需要获得一个SessionFactory实例用于绑定,而这个SessionFactory实例需要我们写代码进行预先创建,并且必须保证该过程要在所有其它要从JNDI上获得SessionFactory实例的程序之前完成。

  因此对于任何App Server来说,我们都不必去管JNDI名称的绑定过程,只需要保证预先创建一个SessionFactory实例出来就够了,剩下的工作 Hibernate会做的。那么如何确保预创建SessionFactory实例呢,如果是Servlet,可以配置一个初始化的Servlet,只要把

  Configuration conf = new Configuration().addClass(Cat.class);
  SessionFactory sf = conf.buildSessionFactory();

  这样的代码加进去就可以了。如果是包含EJB的的复杂的J2EE应用,可能需要依靠App Server的功能来保证预创建SessionFactory实例。
您可能感兴趣的文章:
  • Java中的命名与目录接口JNDI基本操作方法概览
  • 封装jndi操作ldap服务器的工具类
  • 基于JNDI的应用程序开发
  • Weblogic上配置Hibernate为JNDI
  • Spring jndi数据源配置方法详解

标签:红河 武威 拉萨 岳阳 郑州 大兴安岭 亳州 马鞍山

巨人网络通讯声明:本文标题《Hibernate的JNDI绑定分析》,本文关键词  Hibernate,的,JNDI,绑定,分析,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Hibernate的JNDI绑定分析》相关的同类信息!
  • 本页收集关于Hibernate的JNDI绑定分析的相关信息资讯供网民参考!
  • 推荐文章