导出数据库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