本例使用MiddleGen-Hibernate-r5生成hbm文件及POJO,所使用数据库为SQLServer2000,. MiddleGen-Hibernate-r5下载地址为:
http://jaist.dl.sourceforge.net/sourceforge/hibernate/Middlegen-Hibernate-r5.zip
<!--[if !supportLists]-->Ø <!--[endif]-->到http://java.sun.com/上下载JDK,配置环境变量(我的电脑右键->属性->高级->环境变量)
JAVA_HOME:JDK安装目录
CLASS_PATH:JDK安装目录\lib
PATH:JDK安装目录\bin
<!--[if !supportLists]-->Ø <!--[endif]-->点击http://apache.mirror.phpchina.com/ant/binaries/apache-ant-1.7.1-bin.zip 下载ant并解压,设置环境变量(我的电脑右键->属性->高级->环境变量)
ANT_HOME:ant解压目录
<!--[if !supportLists]-->Ø <!--[endif]-->生成hbm文件所需jar包
由于本例使用的是SQLServer2000数据库,所以需要:
msbase.jar,
mssqlserver.jar,
msutil.jar
三个jar包(可以到MS官网上下载)
<!--[if !supportLists]-->Ø <!--[endif]-->生成POJO时所需jar包
hibernate3.jar
dom4j-1.6.1.jar
可以点击
http://nchc.dl.sourceforge.net/sourceforge/hibernate/hibernate-distribution-3.3.1.GA-dist.zip 下载,dom4j-1.6.1.jar位于 hibernate-distribution-3.3.1.GA\lib\required下(也可以通过http://nchc.dl.sourceforge.net/sourceforge/dom4j/dom4j-1.6.1.zip 下载)
hibernate-tools.jar
freemarker.jar
可以点击
http://jaist.dl.sourceforge.net/sourceforge/jboss/HibernateTools-3.2.4.Beta1-R200810311334.zip 下载,解压后jar包位于
plugins\org.hibernate.eclipse_3.2.4.Beta1-R200810311334\lib\tools
slf4j-api-1.5.2.jar
slf4j-jdk14-1.5.2.jar
slf4j-log4j12-1.5.2.jar
可以点击http://www.slf4j.org/dist/slf4j-1.5.2.zip 下载
将下载的MiddleGen-Hibernate-r5解压到任一目录,并在build目录下新建一个文件夹mysrc
打开MiddleGen-Hibernate-r5文件夹,找到并打开Build.xml,按照以下步骤对文件进行更改:
<!--[if !supportLists]-->Ø <!--[endif]-->第24行:更改数据库配置
<!DOCTYPE project [
<!ENTITY database SYSTEM "file:./config/database/hsqldb.xml">
]>
为
<!DOCTYPE project [
<!ENTITY database SYSTEM "file:./config/database/mssql.xml">
]>
因为所使用的是SQLServer2000数据库,所以在此更改将数据库配置文件更改为mssql.xml
<!--[if !supportLists]-->Ø <!--[endif]-->第33行:设置包名
<property name="name" value="airline"/>
为
<property name="name" value="org.test"/>
生成hbm时会建org.test 文件夹,与JAVA结构一样
<!--[if !supportLists]-->Ø <!--[endif]-->第51行:设置输出目录
<property name="build.gen-src.dir" value="${build.dir}/gen-src"/>
为
<property name="build.gen-src.dir" value="${build.dir}/mysrc"/>
指定输出目录为mysrc文件夹
<!--[if !supportLists]-->Ø <!--[endif]-->第185行:又是包名
package="${name}.hibernate"
为
package="${name}.model"//生成文件夹
也可以不设置第33行包名(但有可能不会生成org及test文件夹,未测试),直接改此处为package="org.yourpackage"
在MiddleGen-Hibernate-r5文件夹下config/database/找到并打开mssql.xml,按如下所示进行修改:
<!--[if !supportLists]-->l <!--[endif]-->将
<property name="database.driver.file" value="${lib.dir}/Sprinta2000.jar"/>
<property name="database.driver" value="com.inet.tds.TdsDriver"/>
<property name="database.url" value="jdbc:inetdae7:localhost?database=airline"/>
<property name="database.userid" value="sa"/>
<property name="database.password" value="sa"/>
<property name="database.schema" value=""/>
<property name="database.catalog" value=""/>
修改为
<property name="database.driver.file" value="${lib.dir}/mssqlserver.jar"/>
<property name="database.driver" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
<property name="database.url" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=loginDemo"/>
<property name="database.userid" value="sa"/>
<property name="database.password" value="sa"/>
<property name="database.schema" value="dbo"/>
<property name="database.catalog" value="loginDemo"/>
其中database.schema在这里应该是指数据库的拥有者,在DB2中可能是指模式吧。
<!--[if !supportLists]-->l <!--[endif]-->将msbase.jar,mssqlserver.jar,msutil.jar拷至MiddleGen-Hibernate-r5文件夹lib目录
完成上述两个步骤之后,打开cmd,进入MiddleGen-Hibernate-r5目录,运行ant,将会弹出一个GUI界面,如果不想做任何修改,直接点击Generator就可以生成hbm文件了,生成的hbm文件位于MiddleGen-Hibernate-r5文件夹build\mysrc\com\test\model下。
将以下jar包复制到MiddleGen-Hibernate-r5文件夹lib目录
hibernate3.jar, hibernate-tools.jar, dom4j-1.6.1.jar, slf4j-log4j12-1.5.2.jar, slf4j-api-1.5.2.jar, slf4j-jdk14-1.5.2.jar, freemarker.jar
再次打开build.xml文件
修改第212行
<target name="hbm2java" description="Generate .java from .hbm files.">
<taskdef
name="hbm2java"
classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask"
classpathref="lib.class.path"
/>
<hbm2java output="${build.gen-src.dir}">
<fileset dir="${build.gen-src.dir}">
<include name="**/*.hbm.xml"/>
</fileset>
</hbm2java>
</target>
为
<target name="hbm2java" description="Generate .java from .hbm files.">
<taskdef
name="hbm2java"
classname="org.hibernate.tool.ant.HibernateToolTask"
classpathref="lib.class.path"
/>
<hbm2java destdir="${build.gen-src.dir}">
<configuration>
<fileset dir="${build.gen-src.dir}">
<include name="**/*.hbm.xml"/>
</fileset>
</configuration>
<hbm2java jdk5="true"/>
</hbm2java>
</target>
由于Middlegen生成的hbm文件是里面的引用是hibernate2的DTD,因此修改生成的hbm.xml里面hibernate2的DTD 由
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
变为
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
(也就是将2变为3,这样就不会出现“Don’t use old DTDs,read the Hibernate3.x Migration Guide!”错误)
运行ant hbm2java,生成的<span