利用ant,hibernate的schemaexport自动生成数据库

利用ant,hibernate的schemaexport自动生成数据库

先用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源文件(之前弄了多次都不成功,,原因就是没有加入源文件)
<path id="runtime.classpath">
  <path refid="lib.classpath"></path>
  <path refid="src.classpath"></path>
 </path>

成功之后就会看到在 D:\workspace\student下生成了database.sql文件

下次讲在xdoclet下生成 hbm.xml和hibernate.cfg.xml文件

你可能感兴趣的:(利用ant,hibernate的schemaexport自动生成数据库)