准备:
1.apache-ant-1.7.0.
2.hibernate-3.2.1.ga.zip,HibernateTools-3.2.1.ga.zip.
3.数据库的jdbc驱动程序,我使用的是mysql,驱动程序为mysql-connector-java-5.1.6。
项目布置:
1.建立Project-Name文件夹,其下建立:config,java,schema,lib文件夹以及build.xml文件.
2.加入jar包:hibernate3.jar,hibernate-tools.jar,freemarker.jar,mysql-connector-java.jar,...
3.src/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 ="connection.username" > root </ property >
< property name ="connection.password" > cosmo </ property > <!-- Your DB password here. -->
< property name ="connection.url" > jdbc:mysql://localhost:3306/MasteryHibernate </ property >
< property name ="connection.driver_class" > com.mysql.jdbc.Driver </ property >
< property name ="dialect" > org.hibernate.dialect.MySQLDialect </ property >
< mapping resource ="chapter3/Customer.hbm.xml" />
</ session-factory >
</ hibernate-configuration >
<! 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 ="connection.username" > root </ property >
< property name ="connection.password" > cosmo </ property > <!-- Your DB password here. -->
< property name ="connection.url" > jdbc:mysql://localhost:3306/MasteryHibernate </ property >
< property name ="connection.driver_class" > com.mysql.jdbc.Driver </ property >
< property name ="dialect" > org.hibernate.dialect.MySQLDialect </ property >
< mapping resource ="chapter3/Customer.hbm.xml" />
</ session-factory >
</ hibernate-configuration >
4.src/your-package/Customer.hbm.xml:
<?
xml version="1.0" encoding="UTF-8"
?>
<! DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
< hibernate-mapping >
< class name ="chapter3.Customer" table ="CUSTOMERS" >
< meta attribute ="class-description" >
Represents a single customer.
@author Cosmo
</ meta >
< meta attribute ="class-scope" > public </ meta >
< id name ="id" type ="long" column ="ID" >
< meta attribute ="scope-set" > protected </ meta >
< generator class ="native" />
</ id >
< property name ="name" type ="string" >
< meta attribute ="use-in-tostring" > true </ meta >
< column name ="NAME" length ="15" not-null ="true" unique ="true" />
</ property >
< property name ="registeredTime" type ="timestamp" >
< meta attribute ="field-description" > When the customer was registered </ meta >
< meta attribute ="use-in-tostring" > true </ meta >
< column name ="REGISTERED_TIME" index ="IDX_REGISTERED_TIME"
sql-type ="timestamp" />
</ property >
< property name ="age" type ="int" >
< meta attribute ="field-description" > How old is the customer </ meta >
< meta attribute ="use-in-tostring" > true </ meta >
< column name ="AGE" check ="AGE>10" not-null ="true" />
</ property >
< property name ="sex" type ="char" column ="SEX" />
< property name ="married" type ="boolean" column ="IS_MARRIED" >
< meta attribute ="field-description" > Is the customer married </ meta >
< meta attribute ="use-in-tostring" > true </ meta >
</ property >
< property name ="description" type ="string" >
< meta attribute ="use-in-tostring" > true </ meta >
< column name ="DESCRIPTION" sql-type ="text" />
</ property >
</ class >
</ hibernate-mapping >
<! DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
< hibernate-mapping >
< class name ="chapter3.Customer" table ="CUSTOMERS" >
< meta attribute ="class-description" >
Represents a single customer.
@author Cosmo
</ meta >
< meta attribute ="class-scope" > public </ meta >
< id name ="id" type ="long" column ="ID" >
< meta attribute ="scope-set" > protected </ meta >
< generator class ="native" />
</ id >
< property name ="name" type ="string" >
< meta attribute ="use-in-tostring" > true </ meta >
< column name ="NAME" length ="15" not-null ="true" unique ="true" />
</ property >
< property name ="registeredTime" type ="timestamp" >
< meta attribute ="field-description" > When the customer was registered </ meta >
< meta attribute ="use-in-tostring" > true </ meta >
< column name ="REGISTERED_TIME" index ="IDX_REGISTERED_TIME"
sql-type ="timestamp" />
</ property >
< property name ="age" type ="int" >
< meta attribute ="field-description" > How old is the customer </ meta >
< meta attribute ="use-in-tostring" > true </ meta >
< column name ="AGE" check ="AGE>10" not-null ="true" />
</ property >
< property name ="sex" type ="char" column ="SEX" />
< property name ="married" type ="boolean" column ="IS_MARRIED" >
< meta attribute ="field-description" > Is the customer married </ meta >
< meta attribute ="use-in-tostring" > true </ meta >
</ property >
< property name ="description" type ="string" >
< meta attribute ="use-in-tostring" > true </ meta >
< column name ="DESCRIPTION" sql-type ="text" />
</ property >
</ class >
</ hibernate-mapping >
5.build.xml:
<?
xml version="1.0" encoding="UTF-8"
?>
<!-- ======================================================================
2008-12-12 下午02:47:47
Hbm2javaAndHbm2ddl
Useing hibernate-tools
Cosmo
====================================================================== -->
< project name ="AboutHibernateTools" default ="compile" >
< description >
AboutHibernateTools
</ description >
< property name ="source.root" value ="./src" />
< property name ="class.root" value ="./classes" />
< property name ="lib.dir" value ="./lib" />
< property name ="schema.dir" value ="./schema" />
< path id ="project.class.path" >
< pathelement location ="${class.root}" />
< fileset dir ="${lib.dir}" >
< include name ="*.jar" />
</ fileset >
</ path >
<!-- =================================
target: run
================================= -->
< target name ="run" depends ="hbm2ddl" description ="Run a Hibernate sample" >
< java classname ="chapter3.BusinessService" fork ="true" >
< classpath refid ="project.class.path" />
</ java >
</ target >
<!-- =================================
target: hbm2ddl
================================= -->
< target name ="hbm2ddl" depends ="compile" description ="Generate DB schema from the O/R mapping files" >
< mkdir dir ="${schema.dir}" />
< taskdef name ="hbm2ddl" classname ="org.hibernate.tool.ant.HibernateToolTask" classpathref ="project.class.path" />
< hbm2ddl destdir ="${schema.dir}" >
< configuration configurationfile ="${class.root}/hibernate.cfg.xml" />
< hbm2ddl export ="true" console ="false" create ="true" update ="false" drop ="false" outputfilename ="schema.sql" />
</ hbm2ddl >
</ target >
<!-- =================================
target: compile
================================= -->
< target name ="compile" depends ="hbm2java" description ="Chapter3" >
< javac srcdir ="${source.root}" destdir ="${class.root}" debug ="on" optimize ="off" deprecation ="on" >
< classpath refid ="project.class.path" />
</ javac >
</ target >
<!-- =================================
target: hbm2java
================================= -->
< target name ="hbm2java" depends ="prepare" description ="Generate Java source from the O/R mapping files" >
< taskdef name ="hbm2java" classname ="org.hibernate.tool.ant.HibernateToolTask" classpathref ="project.class.path" />
< hbm2java destdir ="${source.root}" >
< configuration configurationfile ="${class.root}/hibernate.cfg.xml" />
< hbm2java jdk5 ="true" />
</ hbm2java >
</ target >
<!-- - - - - - - - - - - - - - - - - -
target: prepare
- - - - - - - - - - - - - - - - - -->
< target name ="prepare" >
< delete dir ="${class.root}" />
< mkdir dir ="${class.root}" />
< copy todir ="${class.root}" >
< fileset dir ="${source.root}" >
< include name ="**/*.properties" />
< include name ="**/*.hbm.xml" />
< include name ="**/*.cfg.xml" />
</ fileset >
</ copy >
</ target >
</ project >
<!-- ======================================================================
2008-12-12 下午02:47:47
Hbm2javaAndHbm2ddl
Useing hibernate-tools
Cosmo
====================================================================== -->
< project name ="AboutHibernateTools" default ="compile" >
< description >
AboutHibernateTools
</ description >
< property name ="source.root" value ="./src" />
< property name ="class.root" value ="./classes" />
< property name ="lib.dir" value ="./lib" />
< property name ="schema.dir" value ="./schema" />
< path id ="project.class.path" >
< pathelement location ="${class.root}" />
< fileset dir ="${lib.dir}" >
< include name ="*.jar" />
</ fileset >
</ path >
<!-- =================================
target: run
================================= -->
< target name ="run" depends ="hbm2ddl" description ="Run a Hibernate sample" >
< java classname ="chapter3.BusinessService" fork ="true" >
< classpath refid ="project.class.path" />
</ java >
</ target >
<!-- =================================
target: hbm2ddl
================================= -->
< target name ="hbm2ddl" depends ="compile" description ="Generate DB schema from the O/R mapping files" >
< mkdir dir ="${schema.dir}" />
< taskdef name ="hbm2ddl" classname ="org.hibernate.tool.ant.HibernateToolTask" classpathref ="project.class.path" />
< hbm2ddl destdir ="${schema.dir}" >
< configuration configurationfile ="${class.root}/hibernate.cfg.xml" />
< hbm2ddl export ="true" console ="false" create ="true" update ="false" drop ="false" outputfilename ="schema.sql" />
</ hbm2ddl >
</ target >
<!-- =================================
target: compile
================================= -->
< target name ="compile" depends ="hbm2java" description ="Chapter3" >
< javac srcdir ="${source.root}" destdir ="${class.root}" debug ="on" optimize ="off" deprecation ="on" >
< classpath refid ="project.class.path" />
</ javac >
</ target >
<!-- =================================
target: hbm2java
================================= -->
< target name ="hbm2java" depends ="prepare" description ="Generate Java source from the O/R mapping files" >
< taskdef name ="hbm2java" classname ="org.hibernate.tool.ant.HibernateToolTask" classpathref ="project.class.path" />
< hbm2java destdir ="${source.root}" >
< configuration configurationfile ="${class.root}/hibernate.cfg.xml" />
< hbm2java jdk5 ="true" />
</ hbm2java >
</ target >
<!-- - - - - - - - - - - - - - - - - -
target: prepare
- - - - - - - - - - - - - - - - - -->
< target name ="prepare" >
< delete dir ="${class.root}" />
< mkdir dir ="${class.root}" />
< copy todir ="${class.root}" >
< fileset dir ="${source.root}" >
< include name ="**/*.properties" />
< include name ="**/*.hbm.xml" />
< include name ="**/*.cfg.xml" />
</ fileset >
</ copy >
</ target >
</ project >