下面内容整理自《精通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>

以上代码定义了一个hbm2javaTask任务,它的destdir属性指定Java源文件存放在${source.root}文件夹(即src子文件夹)下。<configuration>子元素指定Hibernate的配置文件为classes/hibernate.cfg.xml。

hibernate.cfg.xml文件是XML格式的配置文件。

hbm2javaTask任务重的<hbm2java>子任务就是Hibernate提供的hbm2java工具。它能依据hbm.xml映射文件生成java源文件。

<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>

以上代码定义了一个hbm2ddlTask任务。它的destdir属性指定生成的DDL脚本文件存放在${schema.dir}文件夹(即schema子文件夹)下。<configuration>子元素指定Hibernate的配置文件为classes/hibernate.cfg.xml。

hbm2ddlTask任务重的<hbm2ddl>子任务就是Hibernate提供的hbm2ddl工具,它能依据hbm.xml映射文件生成对应的数据表。

<hbm2ddl>任务属性

export
假设为true,表示会在数据库中运行所生成的DDL脚本。默觉得true

drop
假设为true,表示会生成删除数据库中表的DDL脚本。默觉得true

create
假设为true。表示会生成创建数据库中表的DDL脚本。默觉得true

outputfilename
指定存放DDL脚本的文件

update
假设为true。表示会对照现有数据库及映射文件,生成用于增量更新数据库的DDL。值得注意的是,不能正式投入执行的数据库中採用这样的增量更新。由于它眼下还不是很健壮,不能保证生成准确的增量更新DDL,也不能保证底层数据库能够顺利执行增量更新DDL。默认值为false

haltonerror
假设为true,表示遇到错误时会终止执行ANTproject。默认值为false

format
设定DDL脚本中SQL语句的格式

delimiter
为DDL脚本设置行结束符

console
假设为true,表示会在控制台显示生成DDL脚本。默认值为true

执行hbm2java工具和hbm2ddl工具的更多相关文章

  1. 关于Hibernate中hbm2java和hbm2ddl工具

    hbm2java:根据映射文件自动生成java源文件 hbm2ddl:根据映射文件自动生成数据库的schema XDoclet:根据带有XDoclet标记的java源文件生成映射文件 Middlege ...

  2. 利用java实现可远程执行linux命令的小工具

    在linux的脚本中,如果不对机器做其他的处理,不能实现在linux的机器上执行命令.为了解决这个问题,写了个小工具来解决这个问题. 后面的代码是利用java实现的可远程执行linux命令的小工具,代 ...

  3. Android 开发工具介绍-SDK工具和平台工具

    原文链接:http://android.eoe.cn/topic/android_sdk Android的SDK提供各种工具可以帮你为Android平台开发移动应用程序.这些工具被分类成两组:SDK工 ...

  4. gcc 交叉工具链中工具使用(arm-linux-xxx)

    在Ubuntu系统中使用 gcc 系列工具是在PC机上使用 arm-linux-gcc 编译的目标 是在 arm CPU上使用 一.安装交叉编译工具链 1. 编译工具怎么获取 1)从官网 http:/ ...

  5. Android高手速成--第四部分 开发工具及测试工具

    第四部分 开发工具及测试工具 主要介绍和Android开发工具和测试工具相关的开源项目. 一.开发效率工具 Json2Java根据JSon数据自动生成对应的Java实体类,还支持Parcel.Gson ...

  6. 30款基本UX工具 - 思维流程工具 & 原型工具

    来源:GBin1.com 现在的开发人员在建造网站时,注重的是布局和技术特性,但是往往忽略了更重要的一点,那就是用户体验. 如 果用户在使用的时候,不能简单清楚的知道该要如何操作,那么他们一定会选择另 ...

  7. 分享两个网址,一个是使用mssql自带的跟踪工具和分析工具

    http://www.cnblogs.com/Fooo/archive/2013/02/19/2916789.html 使用mssql自带的跟踪工具和分析工具 http://blog.csdn.net ...

  8. 我的工具:Ping工具

    C# Ping工具 通过该工具可以多个地点Ping服务器以检测服务器响应速度,同时也可以测试网站的响应速度,解析时间,服务器连接时间,下载速度 工具下载地址:https://download.csdn ...

  9. 多功能网页刷新工具,刷pv工具

    多功能网页刷新工具,刷pv工具,在线刷流量,刷PV,刷UV小牛刷新助手功能介绍:1.设置多个刷新网页地址.2.设置刷新时间3.开始工作4.其他操作:老板键:打开时自动刷新:置系统托盘5.可手动输入地址 ...

随机推荐

  1. 洛谷——P3908 异或之和

    P3908 异或之和 题目描述 求1 \bigoplus 2 \bigoplus\cdots\bigoplus N1⨁2⨁⋯⨁N 的值. A \bigoplus BA⨁B 即AA , BB 按位异或. ...

  2. Flask实战第57天:UEditor编辑器集成以及配置上传文件到七牛

    相关链接 UEditor:http://ueditor.baidu.com/website/​ 下载地址:http://ueditor.baidu.com/website/download.html# ...

  3. NOIP 2006 提高组 t1 能量项链

    题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...

  4. 【动态规划】Gym - 101201A - Alphabet

    题意:一个字符串被定义为“alphabetical”,当且仅当它能够删除一些字符,变成“ab...yz”,给你一个只由小写字母组成的字符串,问你最少插入几个字母,使它变成“alphabetical”的 ...

  5. mac下使用github 上传代码

    提起github相信大家都不会陌生,在这里就不再赘述了.作为开源代码库以及版本控制系统,使用好了确实会非常受益,再说的势利点,你找工作时给面试官说你经常维护自己的技术博客和github,相信你给他的印 ...

  6. Web安全开发指南--会话管理

    1.会话管理 3.1.会话管理安全规则 1 避免在URL携带session id. 2 使用SSL加密通道来传输cookie. 3 避免在错误信息和调试日志中记录session id. 4 使用框架自 ...

  7. mysql知识点汇总四

    1.表的垂直分割 “垂直分割”是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的.(以前,在银行做过项目,见过一张表有100多个字段,很恐怖) 示例一:在 ...

  8. sqlserver的CTE实现递归查询

    --递归查询 IF OBJECT_ID('DiGui','U') IS NOT NULL DROP TABLE DiGui CREATE TABLE DiGui( Id ), ParentId ) ) ...

  9. javascript正则中ASCII与unicode

    正则表达式中允许直接利用ASCII和Unicode编码来查找我们相应的字符串. ASCII: 下面是检索ASCII编码在x41-x7a范围内的所有匹配的字符串.(x41,x7a为十六进制) var s ...

  10. linux CMakeLists.txt 语法

    CMake入门教程 参考文献:http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/index.html 官方网址:http://www.cmak ...