Hibernate怎么绑定JNDI

发布时间:2021-12-04 16:26:54 作者:iii
来源:亿速云 阅读:167

这篇文章主要介绍“Hibernate怎么绑定JNDI”,在日常操作中,相信很多人在Hibernate怎么绑定JNDI问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Hibernate怎么绑定JNDI”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

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自身是具有动态绑定功能的。但是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实例。

到此,关于“Hibernate怎么绑定JNDI”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. Tomcat中配置JNDI数据源
  2. 浅析 JNDI / DataSource / ConnectionPool 三者

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

hibernate jndi

上一篇:Hibernate事件系统怎么实现

下一篇:怎么分析Python代码审计中的反序列化和命令执行

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》