Hibernate实战_笔记8(Ant设置Schema导出)

导出数据库Schema

      可以用CREATE语句手工编写SQL DDL,并在数据库中执行这个DDL,来创建数据库Schema。或者(且这是更方便的做法)可以让Hibernate完成这项工作,并给你的应用程序创建一个默认的Schema。
      用来生成模式的工具是hbm2ddl;它的类是org.hibernate.tool.hbm2ddl.SchemaExport,因此它有时也称作SchemaExport。
运行这个工具并创建一个Schema有3种方法:
1)可以在常规的构建过程中,在一个Ant任务中运行<hbm2ddl>
2)可以在应用程序代码中用程序运行SchemaExport,可能在HibernateUtil启动类中。然而,这不常用,因为Schema的生成很少需要编程式的控制
3)当通过设置hibernate.hbm2ddl.auto配置属性为create或者create-drop来创建SessionFactory时,可以启用Schema的自动导出

第2种、第3种方式非常简单,第一种方式配置如下:

<!--Schema导出的Ant目标-->
	<taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="project.classpath" />
	<target name="schemaexport" depends="compile,copymetafiles" description="Exports a generated schema to DB and file">
		<hibernatetool destdir="sql">
			<classpath path="${build.dir}" />
			<configuration configurationfile="${build.dir}/hibernate.cfg.xml" />
			<hbm2ddl
				drop="true"
				create="true"
				export="true"
				outputfilename="helloworld-ddl.sql"
				delimiter=";"
				format="true" />
		</hibernatetool>
	</target>

备注:在之前的基础上,项目内添加sql目录,用于存储DDL SQL语句

1)导出器生成SQL,因此在Hibernate配置文件中设置一种SQL方言是强制的。
2)如果drop设置为true,将首先生成SQL DROP语句,并且所有的表和约束都被移除。如果create设置为true接下来就生成SQL CREATE语句,来创建所有的表和约束。如果这两个选项你都启用了,实际上就在Ant目标的每一次运行中删除和重新创建数据库Schema。
3)如果export设置为true,所有的DDL语句就直接在数据库中被执行。导出器使用在配置文件中找到的连接设置打开一个和数据库的连接。
4)如果有outputfilename,所有的DDL语句就被写到这个文件,并且文件保存在你配置的destdir(我的是sql目录)中。附加delimiter字符给写到这个文件的所有SQL语句,并且如果format是启用的,所有SQL语句都会被很好地缩进。
现在通过在运行ant schemaexport,可以生成、输出并直接把Schema导出到一个文本文件和数据库。所有的表和约束都被删除,然后被再次创建,你就有了一个新的数据库。(忽略任何报告所称的因为表不存在而不能被删除的错误消息。)


注意:需要再导入2个包

1、hibernate-tools.jar包

下载链接地址:http://download.csdn.net/detail/com185272358/7006153

2、freemarker.jar包

下载链接地址:http://download.csdn.net/detail/com185272358/7006161

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值