因为前两天,发了关于hibernate配置多数据库连接和选择什么服务器方案的缘故,有的朋友就动了心眼儿。。呵呵,想把程序跑在weblogic上,结果接着一连串的问题都出来了,
应几个朋友的需求,要用Hibernate调用Weblogic的数据源,所以,我就写了个配置的小例子,希望能帮助大家。
第一步:安装weblogic,配置数据源,我机器上装的是9.2,所以就拿weblogic9.2为例子讲解,数据库选用oracle,数据源名称为oracleDataSource
第二步、Hibernate.cfg.xml的配置文件如下:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd ">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.datasource">oracleDataSource</property>
<property name="hibernate.connection.provider_class">org.hibernate.connection.DatasourceConnectionProvider</property>
<property name="hibernate.jndi.class">weblogic.jndi.WLInitialContextFactory</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.jdbc.fetch_size">100</property>
<property name="hibernate.jdbc.batch_size">50</property>
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
</session-factory>
</hibernate-configuration>
第三步:之后,调用就OK,在此说明一点,在配置的时候,一定要加上
<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
要不然会报“
ClassNotFoundException: org.hibernate.hql.ast.HqlToken ”异常,这是因为Hibernate3.0 采用新的基于ANTLR的HQL/SQL查询翻译器,在Hibernate的配置文件中,hibernate.query.factory_class属性用来选择查询翻译器。使用3.0的批量更新和删除功能的时候出现了不支持条件输入中文的情况。
在此还说明一点,weblogic里自带了很多相关的jar文件,用weblogic的时候,如果出现一些莫名其妙的错,先去查一查有没有相关的jar包冲突。