以下内容整理自《精通hibernate》 第二版
Hibernate提供了从映射文件到Java源代码的转换工具,名为hbm2java工具,可以利用ANT工具来运行它。
<span style="font-size:18px;"><target name="codegen" depends="prepare">
<taskdef name="hbm2javaTask"
classname="org.hibernate.tool.ant.HibernateToolTask"
classpathref="project.class.path" />
<hbm2javaTask destdir="${source.root}"
<configuration configurationfile="${class.root}/hibernate.cfg.xml" />
<hbm2java/>
</hbm2javaTask>
<target> </span>
<hbm2java>任务还可以包含两个属性“jdk5”和“ejb3”,用法如下:
<hbm2java jdk5="true|false" ejb3="true|false">
<hnm2java>任务的jdk5属性指定是否在生成的源代码中包含JDK5的语法特性,ejb3属性指定是否在生成的Java源代码中包含ejb3的特征,这两个属性的默认值都是false。
Hibernate提供了从映射文件到数据库Schema的转换工具,名为hbm2ddl工具,使用hbm2ddl工具时,必须在Hibernate的配置文件中设置hibernate.dialect属性,显示指定底层数据库的SQL方言,因为hbm2ddl工具会根据数据库的SQL方言来生成相应的数据库Schema。
<span style="font-size:18px;"><target name="schema" depends="compile">
<taskdef name="hbm2javaTask"
classname="org.hibernate.tool.ant.HibernateToolTask"
classpathref="project.class.path" />
<hbm2javaTask destdir="${schema.dir}"
<configuration configurationfile="${class.root}/hibernate.cfg.xml" />
<hbm2ddl export="true" console="true" create="true"/>
drop="true" outputfilename="sampledb.sql" />
</hbm2javaTask>
<target> </span>
<hbm2ddl>任务属性
export 如果为true,表示会在数据库中执行所生成的DDL脚本。默认为true
drop 如果为true,表示会生成删除数据库中表的DDL脚本。默认为true
create 如果为true,表示会生成创建数据库中表的DDL脚本。默认为true
outputfilename 指定存放DDL脚本的文件
update 如果为true,表示会对比现有数据库及映射文件,生成用于增量更新数据库的DDL。值得注意的是,不能正式投入运行的数据库中采用这种增量更新。因为它目前还不是非常健壮,不能保证生成准确的增量更新DDL,也不能保证底层数据库可以顺利执行增量更新DDL。默认值为false
haltonerror 如果为true,表示遇到错误时会终止运行ANT工程。默认值为false
format 设定DDL脚本中SQL语句的格式
delimiter 为DDL脚本设置行结束符
console 如果为true,表示会在控制台显示生成DDL脚本。默认值为true