服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

在 weblogic 8.1上配置 hibernate 3.0

下面是在weblogic 8.1上配置hibernate的具体步骤:

◆首先要创建一个域。我创建了一个weblogic workshop(wlw)域,因为我打算使用wlw来创建和实现应用程序。

◆将hibernate...\lib\antlr-2.7.5h3.jar添加到pre_classpath,或者在hibernate.cfg.xml文件中将query.factory_class属性设为user 2.x's query factory。

◆wlw域还启动了一个pointbase数据库实例。我将使用这个内置实例。我创建了一个新的用户和模式。并为该模式填充了一些示例数据。

◆在服务器实例中配置连接池和数据源。

◆创建应用程序。我打算使用weblogic workshop创建。

◆应该将库(jar文件)(它们是成功运行hibernate所必需的)放在哪里呢?放在应用程序的app-inf/lib文件夹中。库包括hibernate.jar和附加的第三方库。引用hibernate reference的表格3-1。

◆在wlw中创建一个java项目。该java项目包括映射到数据库的域类。wlw编译该项目,并将生成的jar文件放到app-inf/lib目录下。在java项目中编码域类。创建hibernate映射文件和hibernate配置文件。此外,从hibernate reference复制实现,创建hibenateutil类。hibernate配置文件包括数据源的jndi名。

◆创建一个ejb对象(例如,一个模块)。该项目包含了会话bean。编写一个操纵域类的会话bean。

◆创建一个web或web service项目(例如,一个模块)。该项目包含了可互操作性地测试会话bean的组件。

完整、有效、自包含的示例应用程序在此。其中包括了模式和所有的hibernate配置文件。

我在上面描述了在weblogic 8.1上配置hibernate 3.0的具体步骤。下面将介绍高级配置,其中hibernate使用了weblogic的java命名和目录接口(java naming and directory interface,jndi)、java事务api(java transaction api,jta)、java连接器架构(java connector architecture,jca)和java管理扩展(java management extension,jmx)实现。

我们先从jndi开始。通过在hibernate.cfg.xml文件中命名sessionfactory,hibernate使sessionfactory在jndi中可用。呀!这在weblogic中不起作用。正如此处所描述的,weblogic jndi与hibernate配合得不是很好。有多个工作区。工作区手动将sessionfactory绑定到jndi中,方法是通过weblogic startup类或者启动servlet。但是,我不能使sessionfactory实例从jndi安全返回。因此,折衷一下,为sessionfactory向hibernateutil实用类添加一个存取器。

为了配置hibernate使用jta,我在hibernate.cfg.xml文件中配置了transaction.factory_class。有两个选项:org.hibernate.transaction.jtatransactionfactory和org.hibernate.transaction.cmttransactionfactory。说明文档建议,对bean托管事务界定(bean managed transaction demarcation,bmtd)bean使用jtatransactionfactory,而对容器托管事务界定(container managed transaction demarcation,cmtd)bean使用cmttransactionfactory。

jtatransactionfactory似乎更通用些,它既支持bmtd bean又支持cmtd bean。因此,我配置的是jtatransactionfactory。此外,为了以特定于容器的方式查找事务,我在hibernate.cfg.xml文件中配置了transaction.manager_lookup_class。借助于这个配置,我完全不需要使用hibernatetransaction api。

对hibernate的jca支持是实验性质的,目前还没有全面应用于weblogic。我可以设想,以后hibernate会被打包为resource archive(rar)文件。hibernate rar文件作为资源适配器部署。适配器使session在jndi中可用。所有的配置元素都是通过资源适配器(xml文件)配置的,而不是通过hibernate.cfg.xml文件或采用其他方法配置。为什么在weblogic中要配置hibernate使用jca?jca旨在封装传统系统的连接、事务等等,并使它们在j2ee中可用。但是,由于hibernate,传统的资源适配器的优势不能全面体现。一旦hibernate被配置为资源适配器,特定的应用程序与hibernate的耦合就被削弱了。多个不同的应用程序可以使用同一个hibernate资源适配器。由于当前正在开发的ejb 3.0,这种配置在ejb的持久性api、hibernate和java数据对象(java data object,jdo)的标准化方面的优势更为明显。从理论上讲,可以热部署(或重部署)适配器和改变持久性实现。

hibernate附带jmx management bean (mbean)实现。我不知道如何使用jmx将hibernate部署到weblogic上。hibernate和weblogic使用jmx有什么好处?至少有两条。一条是部署和重部署。更重要的一条是,可以监控hibernate和获得的统计信息。从jmx控制台进行运行时监控是所部署的应用程序运行良好的基本保障。

扫描关注微信公众号