先用eclipse新建一个项目student作为示范
新建Student类
如下:
package student; public class Student { private Long id; private String name; private String sex; private String email; public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
接下来编写ant任务生成数据库文件
注意:
我把eclipse放在了D盘,即D:/eclipse,eclipse对应的workspace也在D盘,D:/workspace
我把所有的lib及其依赖包都放在D:/workspace/lib,这些jar文件当然都包括hibernate3.jar还有其依赖包(里面还有其他的东西,例如spring的jar还有xdoclet的jar,这里用不到就不涉及了)
在D:/workspace/student项目目录下新建一个hibernate-build.xml用于书写ant任务,文件目录如下:D:/workspace/student/hibernate-build.xml
当然,eclipse 项目的文件我是分成两个目录的,即src(存储原文件,后缀为.java)和bin(存储编译过的文件,后缀为.class)
目录D:/workspace/student/src/Student.java
D:/workspace/student/bin/Student.class
<project name="hibernate-build.xml" default="createDatabase"> <property name="classes.dir" value="bin" /> <property name="lib.dir" value="../lib" /> <property name="src.dir" value="src"/> <path id="lib.classpath"> <fileset dir="${lib.dir}"> <include name="**/*.jar"/> </fileset> </path> <path id="src.classpath"> <pathelement location="${src.dir}"/> </path> <path id="runtime.classpath"> <path refid="lib.classpath"></path> <path refid="src.classpath"></path> </path> <target name="createDatabase"> <taskdef name="schemaexport" classname="org.hibernate.tool.hbm2ddl.SchemaExportTask"> <classpath refid="runtime.classpath" /> </taskdef> <schemaexport config="${classes.dir}/hibernate.cfg.xml" quiet="false" text="true" delimiter=";" output="database.sql"> </schemaexport> </target>
如上,看到quiet="false" text="true" delimiter=";" 了吗
还是要解释一下
quiet=t"rue" 不要把脚本输出到stdout
drop="true" 只进行drop tables的步骤
text="true" 不执行在数据库中运行的步骤
output="database.sql" 把生成的脚本输出到database.sql文件中
config="hibernate,cfg.xml" 从xml文件读取hibernate的配置
properties="hibernate.properties" 从文件读入数据库属性
delemiter=";" 为脚本设置行结束符
注意运行的classpath要包括所有用到的jar还有src源文件(之前弄了多次都不成功,,原因就是没有加入源文件)
成功之后就会看到在 D:\workspace\student下生成了database.sql文件