使用Hbm2JavaTask生成代码是非常容易的,比hibernate提供的schemaExport(配置文件到数据库)的使用容易得多。
真不知道作者怎么搞的,把个schemaExport写得这么难......
1.开始前的准备
1.1 准备hibernate-2.1.6.zip
1.2 准备hibernate-extensions-2.1.2.zip
1.3 准备logging-log4j-1.2.9.zip
1.4 把相关.jar文件全部复制到工程目录之下的lib目录
1.5 知道如何使用ant。可阅读我写的文章"非常简单的ant文件"
2.创建工程目录及文件结构如下
Payment <dir> |-src <dir> |-hbm <dir> |-payment <dir> |-Payment.hbm.xml |-classes <dir> |-lib <dir> |-build.xml |-hibernate.codegen.xml |-log4j.properties |
3.各文件代码
3.1 build.xml
<project name="" basedir="./" default="g"> <path id="p"> <fileset dir="lib/"> <include name="**/*.jar"/> </fileset> </path> <target name="g" > <taskdef name="g" classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask" classpathref="p"/> <g config="hibernate.codegen.xml" output="src"> <fileset dir="hbm"> <include name="**/*.hbm.xml"/> </fileset> </g> </target> </project> |
3.2 hibernate.codegen.xml
<?xml version='1.0' encoding='gbk'?> <codegen> <generate renderer="net.sf.hibernate.tool.hbm2java.BasicRenderer"/> </codegen> |
3.3 log4j.properties
# Configure logging for testing log4j.rootLogger=DEBUG, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout |
3.4 Payment.hbm.xml
<?xml version="1.0" encoding="gbk"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="payment.Payment" table="PAYMENT"> <id name="id" type="long" column="PAYMENT_ID"> <generator class="native"/> </id> <property name="amount" column="AMOUNT" type="long"/> </class> </hibernate-mapping> |
4.说明
4.1 build.xml文件中将hibernate extensions包提供的net.sf.hibernate.tool.hbm2java.Hbm2JavaTask定义为一个任务。
4.2 此任务根据hbm目录包括子目录下的所有以.hbm.xml结尾的hibernate配置文件生成.java文件,并输出到src目录。输出的.java路径是根据class标签中的name属性。
4.3 需要给Hbm2JavaTask类指定一个类渲染器配置文件hibernate.codegen.xml。
4.3 配置log4j.properties查看输出,可选。