下面内容整理自《精通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. 查看Linux系统资源占用

    Linux查看进程占用磁盘IO yum install -y itop iotop -oP Linux查看进程网络使用 yum install -y nethogs nethogs nethogs e ...

  2. Flask实战第37天:服务器权限验证

    完成服务器权限验证之前,我们先如下页面先补上 帖子管理 {% extends 'cms/cms_base.html' %} {% block title %} 帖子管理-CMS管理系统 {% endb ...

  3. C++中template的.h文件和.cpp文件的问题

    在C++中,用到类模板时,如果类似一般的类声明定义一样,把类声明放在.h文件中,而具体的函数定义放在.cpp文件中的话,会发现编译器会报错.如类似下面代码: //test.h文件 #ifndef TE ...

  4. 渗透脚本快速生成工具Intersect

    渗透脚本快速生成工具Intersect   当渗透人员获取目标系统的执行权限,往往需要编写相应的脚本,实现更多的渗透操作.Kali Linux提供一款Python脚本快速生成工具Intersect.该 ...

  5. JZYZOJ1369 [coci2012]覆盖字符串 AC自动机

    http://172.20.6.3/Problem_Show.asp?id=1369 trie树如果不优化就这么往里面放这么多单词肯定超空间+超时,所以需要去掉无用的字符串(不属于原字符串的),但是一 ...

  6. python基础之闭包函数与装饰器

    闭包函数: 什么是闭包函数: 闭指的是定义在一个函数内部 包指的是该函数包含对外部作用域(非全局作用域)名字的引用 def counter(): n=0 def incr(): nonlocal n ...

  7. Problem C: 程序改错(递归函数):数字转字符

    Description 下面程序中“/ ***** N ***** /”的下一行中有错误,请改正(注意:不得加行.减行.加句.减句,否则后果自负). 该程序功能:用递归法将一个六位整数n转换成字符串, ...

  8. [转]Spring MVC 4常用的那些注解

    Spring从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping, @RequestParam, @ModelAttribute等等这样类似的注解.到目前为止,Spring的版 ...

  9. HDU 4584 Building bridges (水题)

    Building bridges Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) ...

  10. In c++ access control works on per-class basis not on per-object basis.

    #ifndef MYTIME_H #define MYTIME_H class MyTime { private: int m_hour; int m_minute; public: MyTime() ...