Middlegen-Hibernate-r5使用之 oracle10g

 

Middlegen-Hibernate-r5配置

1得到 Middlegen-Hibernate-r5包 后将其解压到d:\Middlegen-Hibernate-r5

2 把数据库驱动程序(这里用的是ojdbc14.jar)放到d:\Middlegen-Hibernate-r5 \lib目录下

3 配置数据参数D:\Middlegen-Hibernate-r5\config\database\oracle.xml

   <property environment="env"/>

   <property name="database.script.file"           value=""/>
   <property name="database.driver.file"           value="${lib.dir}/ojdbc14.jar"/>
   <property name="database.driver.classpath"      value="${database.driver.file}"/>
   <property name="database.driver"                value="oracle.jdbc.driver.OracleDriver"/>
   <property name="database.url"                   value="jdbc:oracle:thin:@192.168.0.1:1521:dbname"/>
   <property name="database.userid"                value="username"/>
   <property name="database.password"              value="password"/>
   <property name="database.schema"                value="username"/>

   <property name="database.catalog"               value=""/>

   <!--property name="jboss.datasource.mapping"       value="Oracle7"/-->
   <property name="jboss.datasource.mapping"       value="Oracle10g"/>
   <!--property name="jboss.datasource.mapping"       value="Oracle8"/-->

注意:将原文件修改黑体部分改成你需要的数据库配置,特别需要强调的是在oracle中要指定 <property name="database.schema"                value="username"/>如未指则在生成时会出问题.value值和database.userid值一样

注意 问题1:如未指定database.schema则会出现以下错误:

D:\Middlegen-Hibernate-r5\build.xml:148: middlegen.MiddlegenException: Middlegen
 successfully connected to the database, but couldn't find any tables. Perhaps t
he specified schema or catalog is wrong? -Or maybe there aren't any tables in th
e database at all?
Configured schema:
Configured catalog:
Available schemas:

  ANONYMOUS
  CTXSYS
  ...

Available catalogs:

问题1解决办法按本节的正确配置注意事项.

注意问题2: 如果未删除oracle10g中的垃圾表如"BINjR8PK5HhrrgMK8KmgQ9nw== "见分则会出现如下错误:

 D:\Middlegen-Hibernate-r5\build.xml:148: middlegen.MiddlegenException: Database
problem:ORA-01424: 转义符之后字符缺失或非法

问题解决办法:删除oracle10g中的垃圾表然后再按生成步骤进行,删除oracle10g中的所有垃圾表见文章如http://blog.csdn.net/inber/archive/2006/07/22/958372.aspx

4 修改build.xml引用的数据库配置

找到

<!DOCTYPE project [
    <!ENTITY database SYSTEM "file:./config/database/hsqldb.xml">
]>

将其改为:

<!DOCTYPE project [
    <!ENTITY database SYSTEM "file:./config/database/oracle.xml">
]>

5 修改hbm文件的输出目录

原为   <property name="build.gen-src.dir"              value="${build.dir}/gen-src"/>

默认为build\gen-src目录,当然你也可以改成你期望的如

   改为<property name="build.gen-src.dir"              value="c:\hbm"/>

6 修改hbm文件的包名

           <hibernate
            destination="${build.gen-src.dir}"
            package="${name}.hibernate"
            genXDocletTags="flase"
            genIntergratedCompositeKeys="false"
            javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"
         />

其中${name}默认值为airline  也就是 package的默认值为airline.hibernate使用默认值生成一个.hbm文件时就对应的属于airline.hibernate包可以把它改为你要的包如下:

         <hibernate
            destination="${build.gen-src.dir}"
            package="model"
            genXDocletTags="flase"
            genIntergratedCompositeKeys="false"
            javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"
         />

则生成后的包为model

这里有个属性 genXDocletTags 如设置为True生成的代码将包含xdoclettag,为以后的开发过程中用借助xdoclet进行映射调整提供帮助

至此对middlegen的配置完毕,用ant 运行Middlegen-Hibernate-r5,从数据库生成对应的hbm文件.

用ant运行结果:



 

(图1 middlegn 运行结果)



 

(图2 生成的***.hbm.xml)

 

 

 

 

 

************************************
hibernate-extensions-2.0应用配置
************************************
这是hibernate的工具,/tools下有3个工具
class2hbm.bat 根据你自己对应表所写的java文件,生成相应的*.hbm.xml文件
ddl2hbm.bat 根据你的数据库表,自动生成*.hbm.xml和*.java文件(如果不需要详细的配置,建议用这种方式生成*.xml和*.java文件)
hbm2java.bat 根据*.hbm.xml生成相应的*.java文件

用之前,首先得用ant编译
【注意的地方】
build.xml
<property name="hibernate-core.home" value="../../hibernate-2.0"/>//找到该行,40行左右
value为你得hibernate解压目录

【编译完毕】
编译完的文件存放在/tools/target/hibernate-tools-2.0/
现在可以用编译完的执行文件进行映射转化了

【应用】
hbm2java.bat
1、进入命令行模式,进入hibernate-tools-2.0目录,进入/bin
2、首先执行setenv.bat,设置一下环境变量,运行前,先检查一下setenv.bat文件,用文本编辑器打开,找到如下行:
set JDBC_DRIVER=C:\\Progra~1\\SQLLIB\\java\\db2java.zip;C:\\mm.mysql-2.0.14\\mm.mysql-2.0.14-bin.jar;D:\\j2sdk1.4.1\\lib\\JSQLConnect.jar
//将你的JDBC驱动添加进去
rem set HIBERNATE_HOME=..\\..\\hibernate-2.0//原来的
set HIBERNATE_HOME=D:\\hiber\\hibernate-2.0//改成你当前hibernate-2.0所在目录
3、执行hbm2java.bat D:\\hiber\\com\\test\\*.xml //后面所跟的是你用Middlegen Hibernate所生成的*.hbm.xml文件

ddl2hbm.bat
1、2步骤如hbm2java
3、运行ddl2hbm,会弹开一个图形界面
4、在Connection面板里,输入JDBC驱动的相关信息,如:
DriverClass:com.jnetdirect.jsql.JSQLDriver
ConnectionUrl:jdbc:JSQLConnect://服务器名/database=数据库名&user=用户名&password=密码(注意这是我所用的驱动支持将用户名和密码放在后面这种格式)
UserName:用户名(我的ConnectionUrl已填写该信息,这里可不填)
PassWord:密码(我的ConnectionUrl已填写该信息,这里可不填)
5、在Code面板里,可以定义包名
6、在Output面板里,可以定义文件输出路径
7、设置好后,进入Table面板,点击tables…按钮,如果数据库连接成功,则会弹开一个小面板,选择你要映射的数据库,点击确定即可,此时
Table面板里就会显示该数据库的所有表格,选择你需要的表,点击“Generate”,则在输出路径里生成*.hbm.xml和*.java文件

【注意的地方】
因为Sqlserver不支持hibernate里的sequences类型,在测试代码时会出错,你打开生成的*.hbm.xml

<id column="test_id" name="id" type="java.lang.Long">
<generator class="identity"/>//这里改成identity即可
</id>

你可能感兴趣的:(oracle,Hibernate,xml,jdbc,jboss)