在大多数的Hibernate程序中,SessionFactory只是在程序初始化的时候被初始化一次。这个单实例的SessionFactory对象被用来创建在程序中使用的Session。一个经常争论的问题就是sessionFactory应该被放在什么位置,以及如何去访问sessionfactory。
在J2EE环境下,将SessionFactory与JNDI绑定在一起,这样可以更容易在线程之间以及Hibernate组件之间共享。当然,JNDI并不是唯一能够取得SessionFactory的途径。有许多其他方式可以得到同样的目的,例如使用ServletContext或者单实例的静态常量。一个比较特殊的方法是使用支持控制反转(IOC)的框架。但是,JNDI仍然是一种流行的方式。我们将在第8章讨论一些其他可能的方式。
如果在hibernate.session_factory_name属性设定为目录节点的名字的时候,SessionFactory会自动绑定到JNDI。如果运行环境没有提供一个默认的JNDI上下文空间,你需要通过hibernate.jndi.url和hibernate.jndi.class指定初始的命名空间。
在这里有一个Hibernate配置的例子,通过Sun免费的文件系统fscontext.jar把SessionFactory绑定到hibernate/HibernateFactory上面。
当然,你可以使用XML文件来完成这个任务。当然这个例子并不是真实的例子,绝大多数的应用服务器都会通过JNDI提供连接池,同时也提供一个默认的可写的JNDI实现。JBoss当然也有,所以你可以略过最后的两个属性。现在你需要做的就是调用Configuration.configure().buildSessionFactory()去初始化绑定。
让我们来看一下其他一些重要的配置。