Ant+xdoclet管理hibernate配置文件

原创 2012年04月15日 16:16:41

               平时开发数据库软件时,总是先用powerdesigner设计好表,生成数据库表,按照表写相应的javabean,写相应的hibernate映射文件,写相应的hibernate配置文件,过程比较复杂和乏味,而使用xdoclet工具之后,这些文件基本可以自动生成,大大的提高了开发效率。下面来简单地介绍一下ant+xdoclet怎样管理hibernate的配置文件。

1.      下载myeclipse , xdoclet jar包,hibernate jar包

2.      新建项目,新建lib目录,将hibernate和xdoclet所需要的jar包放到工程的lib目录下。

3.      新建Book类,代码如下:

packagecom.lavasoft.zfv.domain.zfv.book.entity;

 

importjava.util.Date;

 

/**

 * File Name:  Book.java

 * Created by: IntelliJ IDEA.

 * Copyright:  Copyright (c) 2003-2006

 * Author:     leizhimin

 * Modifier:   leizhimin

 * Date Time:  2006-12-16 12:54:50

 * Readme:     图书

 */

/**

 * 图书

 *

 * @hibernate.mappingdefault-lazy="false"

 * @hibernate.metaattribute="class-description" value="图书"

 * @hibernate.class table="bk_ts"

 */

publicclass Book {

      private Long id; // 标识

      private String code; // 代码

      private String name; // 名称*

      private String bookman; // 出版社

      private Date pubDate; // 出版日期

      private String author; // 作者

      private String translator; // 译者

      private Double price; // 单价*

      private int amount; // 采购数量*

      private String buyer; // 采购人

      private String assessor; // 审核人

      private Date dateMark; // 操作时间(登记日期)*

      private String operator; // 操作员(录入人)*

      private String sort; // 类别(XXYYZZ格式,对应大中细类别)*

      private String summary; // 摘要(内容简介)

      private String remark; // 备注

 

      public Book() {

      }

 

      /**

       *@hibernate.id generator-class="native" column="id"

       *@hibernate.meta attribute="field-description" value="标识"

       */

      public Long getId() {

               return id;

      }

 

      public void setId(Long id) {

               this.id = id;

      }

 

      /**

       *@hibernate.property column="dm" type="string"length="20"

       *                     not-null="false"

       *@hibernate.meta attribute="field-description" value="代码"

       */

      public String getCode() {

               return code;

      }

 

      public void setCode(String code) {

               this.code = code;

      }

 

      /**

       *@hibernate.property column="mc" type="string"length="100"

       *                     not-null="true"

       *@hibernate.meta attribute="field-description" value="名称"

       */

      public String getName() {

               return name;

      }

 

      public void setName(String name) {

               this.name = name;

      }

 

      /**

       *@hibernate.property column="cbs" type="string"length="24"

       *                     not-null="false"

       *@hibernate.meta attribute="field-description" value="出版社"

       */

      public String getBookman() {

               return bookman;

      }

 

      public void setBookman(String bookman) {

               this.bookman = bookman;

      }

 

      /**

       *@hibernate.property column="cbrq" type="timestamp"not-null="false"

       *@hibernate.meta attribute="field-description" value="出版日期"

       */

      public Date getPubDate() {

               return pubDate;

      }

 

      public void setPubDate(Date pubDate) {

               this.pubDate = pubDate;

      }

 

      /**

       *@hibernate.property column="zz" type="string"length="24"

       *                     not-null="false"

       *@hibernate.meta attribute="field-description" value="作者"

       */

      public String getAuthor() {

               return author;

      }

 

      public void setAuthor(String author) {

               this.author = author;

      }

 

      /**

       *@hibernate.property column="yz" type="string"length="24"

       *                     not-null="false"

       *@hibernate.meta attribute="field-description" value="译者"

       */

      public String getTranslator() {

               return translator;

      }

 

      public void setTranslator(Stringtranslator) {

               this.translator = translator;

      }

 

      /**

       *@hibernate.property column="dj" type="big_decimal"precision="19"

       *                     scale="6"not-null="true"

       *@hibernate.meta attribute="field-description" value="单价"

       */

      public Double getPrice() {

               return price;

      }

 

      public void setPrice(Double price) {

               this.price = price;

      }

 

      /**

       *@hibernate.property column="sl" type="int"not-null="true"

       *@hibernate.meta attribute="field-description" value="数量"

       */

      public int getAmount() {

               return amount;

      }

 

      public void setAmount(int amount) {

               this.amount = amount;

      }

 

      /**

       *@hibernate.property column="cgr" type="string"length="12"

       *                     not-null="false"

       *@hibernate.meta attribute="field-description" value="采购人"

       */

      public String getBuyer() {

               return buyer;

      }

 

      public void setBuyer(String buyer) {

               this.buyer = buyer;

      }

 

      /**

       *@hibernate.property column="shr" type="string"length="12"

       *                     not-null="false"

       *@hibernate.meta attribute="field-description" value="审核人"

       */

      public String getAssessor() {

               return assessor;

      }

 

      public void setAssessor(String assessor) {

               this.assessor = assessor;

      }

 

      /**

       *@hibernate.property column="czsj" type="timestamp"not-null="true"

       *@hibernate.meta attribute="field-description" value="操作时间"

       */

      public Date getDateMark() {

               return dateMark;

      }

 

      public void setDateMark(Date dateMark) {

               this.dateMark = dateMark;

      }

 

      /**

       *@hibernate.property column="czy" type="string"length="12"

       *                     not-null="true"

       *@hibernate.meta attribute="field-description" value="操作员"

       */

      public String getOperator() {

               return operator;

      }

 

      public void setOperator(String operator) {

               this.operator = operator;

      }

 

      /**

       *@hibernate.property column="lb" type="string"length="12" not-null="true"

       *@hibernate.meta attribute="field-description" value="类别"

       */

      public String getSort() {

               return sort;

      }

 

      public void setSort(String sort) {

               this.sort = sort;

      }

 

      /**

       *@hibernate.property column="zy" type="string"length="600"

       *                     not-null="false"

       *@hibernate.meta attribute="field-description" value="摘要"

       */

      public String getSummary() {

               return summary;

      }

 

      public void setSummary(String summary) {

               this.summary = summary;

      }

 

      /**

       *@hibernate.property column="bz" type="string"length="200"

       *                     not-null="false"

       *@hibernate.meta attribute="field-description" value="备注"

       */

      public String getRemark() {

               return remark;

      }

 

      public void setRemark(String remark) {

               this.remark = remark;

      }

}

4.      新建build.xml文件:

<?xml version="1.0"encoding="gb2312"?>

<!--name project的名称,可以随意取   

   default为要执行的target名称(如果要想生成 mapping文件,则将default的值改为generate-mapping

                                                                     如果要想生成hibernate配置文件,则将default的值改为generate-configuration

                                                                     如果要想生成sql语句,则将default的值改为generate-schema-mysql                                                          

     如果不写basedir,则默认的basedir为工程的根目录

-->

<project name="xdoclet" default="generate-schema-mysql">

   <!-- 相当于定义全局变量,例如xdoclet.lib.dir就表示工程目录下的lib目录  -->

   <property name="xdoclet.lib.dir" value="${basedir}/lib" />

   <property name="project.lib.dir" value="${basedir}/lib" />

   <property name="project.src.dir" value="${basedir}/src" />

   <property name="project.resources.dir" value="${basedir}/doc/dbscript" />

   <property name="tomcat.lib.dir" value="F:/apache-tomcat-6.0/apache-tomcat-6.0.35/lib"/>

   <property name="hibernate.cfg.dialect" value="org.hibernate.dialect.MySQLDialect"/>

   <property name="hibernate.cfg.driver" value="com.mysql.jdbc.Driver" />

   <property name="hibernate.cfg.username" value="root" />

   <property name="hibernate.cfg.password" value="root" />

   <property name="hibernate.cfg.jdbcurl" value="jdbc:mysql://localhost:3306/hibernate"/>

   <property name="hibernate.cfg.showsql" value="true" />

  

   <target name="xdoclet">

     <!-- 定义路径 -->

     <path id="xdoclet.task.classpath">

        <!-- ${tomcat.lib.dir}就是前面定义的全局变量,即指  F:/apache-tomcat-6.0/apache-tomcat-6.0.35/lib下的所有jar     -->

        <pathelement path="${tomcat.lib.dir}/*.jar" />

        <!-- fileset 为文件的过滤器,这个指的是${basedir}/lib下的所有jar     -->

        <fileset dir="${xdoclet.lib.dir}">

          <include name="**/*.jar" />

        </fileset>

        <!-- fileset 为文件的过滤器,这个指的是${basedir}/lib下除了hibernate3.jar之外的所有jar包,include指包括,exclude指除去   -->

        <fileset dir="${project.lib.dir}">

          <include name="**/*.jar" />

          <exclude name="**/hibernate3.jar" />

        </fileset>

     </path>

     <!-- 引进xdoclet.task.classpath下所有的包,实例化xdoclet.modules.hibernate.HibernateDocletTask  -->

     <taskdef name="hibernatedoclet" classname="xdoclet.modules.hibernate.HibernateDocletTask"classpathref="xdoclet.task.classpath"/>

   </target>

  

   <!--生成 hibernate映射文件,在执行generate-mapping target之前要执行xdoclet target -->

   <target name="generate-mapping" depends="xdoclet">

     <!-- 将工程目录下的src目录下的任意目录下的domain目录下的任意.java文件按规则生成hbm.xml文件   -->

     <hibernatedoclet destdir="${project.src.dir}" verbose="true" force="false">

        <fileset dir="${project.src.dir}">

          <include name="**/domain/**/*.java" />

        </fileset>

        <hibernate version="3.0" xmlencoding="gb2312"/>

     </hibernatedoclet>

   </target>

  

   <!--生成hibernate的配置文件,在执行generate-configuration target之前要执行xdoclet target -->

   <target name="generate-configuration" depends="xdoclet">

     <hibernatedoclet destdir="${project.src.dir}" verbose="true" force="true">

        <fileset dir="${project.src.dir}">

          <include name="**/domain/**/*.java" />

        </fileset>

        <!-- 生成hibernate.cfg.xml${basedir}/doc/dbscript目录下 -->

        <hibernatecfg destinationFile="hibernate.cfg.xml" dialect="${hibernate.cfg.dialect}" driver="${hibernate.cfg.driver}" username="${hibernate.cfg.username}" password="${hibernate.cfg.password}" jdbcurl="${hibernate.cfg.jdbcurl}" showsql="${hibernate.cfg.showsql}" destdir="${project.resources.dir}" xmlencoding="gb2312" />

     </hibernatedoclet>

   </target>

  

   <!--生成hibernate表中的sql语句,在执行generate-schema-mysql target之前要执行xdoclet target   -->

   <target name="generate-schema-mysql" depends="xdoclet">

     <taskdef name="schemaexport" classname="org.hibernate.tool.hbm2ddl.SchemaExportTask"classpathref="xdoclet.task.classpath"/>

     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>

     <property name="hibernate.format_sql" value="true" />

     <property name="hibernate.use_sql_comments true" value="true" />

     <schemaexport quiet="no" text="yes"drop="no" delimiter=";" output="${project.resources.dir}/zfvims-mysql-schema.sql">

        <fileset dir="${project.src.dir}">

          <include name="**/domain/**/*.hbm.xml" />

        </fileset>

     </schemaexport>

   </target>

 

</project>

将project元素下的default属性改为generate-mapping,运行build.xml文件,会生成hibernate映射文件把project元素下的default属性改为generate-configuration,运行build.xml文件,会生成hibernate配置文件,把project元素下的default属性改为generate-schema-mysql,运行build.xml文件,会生成数据库表的sql语句。

此时工程的目录为:

 

  

通过Ant+Xdoclet生成Hibernate配置文件和映射文件

在上篇文章中,我们介绍了Ant的基本概念及其简单的使用方法,在文章的最后有一个例子用到了Xdoclet相关内容,本篇文章主要来介绍Xdoclet以及通过Ant+Xdoclet生成Hibernate配置...
  • jnqqls
  • jnqqls
  • 2013年04月26日 16:48
  • 1525

spring整合hibernate配置文件

Spring对hibernate配置文件hibernate.cfg.xml的集成,来取代hibernate.cfg.xml的配置 spring对hibernate配置文件hibernate.cf...
  • shipeng22022
  • shipeng22022
  • 2014年03月10日 10:19
  • 12718

Hibernate总结—hibernate配置文件

Hibernate作为ORM框架的一个强大实现,配置文件是必不可少的。.NET中对ORM框架的实现,用的是EntityFramework,Java这边则是Hibernate。在说Hibernate配置...
  • u013038861
  • u013038861
  • 2016年06月28日 21:27
  • 1267

Hibernate框架核心配置文件

Hibernate核心配置文件hibernate.cfg.xml主要由以下四部分组成 (1)数据库连接信息,包括驱动程序类名、连接URL、用户名和密码。 (2)Hibernate相关特性,包括dial...
  • qq208617107
  • qq208617107
  • 2016年04月09日 10:05
  • 3548

Hibernate学习笔记(一) — hibernate的配置文件简介与执行原理

一、初识Hibernate 1.JDBC的缺点: 1).编写代码的时候过于繁琐,try和catch比较多 2).没有做数据缓存 3).不是面向对象编程 4).sql语句固定,可移植性差 JDBC的优点...
  • u013497151
  • u013497151
  • 2015年08月05日 20:52
  • 959

Hibernate配置文件详解

Hibernate的基本配置文件有两种:hibernate.cfg.xml和model.hbm.xml文件。 hibernate.cfg.xml包含了Hibernate与数据库的基本连接信息,在H...
  • qq_30641447
  • qq_30641447
  • 2016年05月30日 10:03
  • 5764

初识Hibernate及简单的手动创建配置文件

什么是Hibernate? Hibernate是一个用于简化数据库操作的ORM框架。 什么是ORM? O:Object,表示一般的JavaBean对象; R:Relationship,表示数据库中的关...
  • hhboyggyy
  • hhboyggyy
  • 2017年05月22日 23:12
  • 448

Hibernate加载配置文件的两种方法

细节问题的解决:org.hibernate.DuplicateMappingException
  • u012382534
  • u012382534
  • 2015年06月05日 10:55
  • 4814

Hibernate核心配置文件常用配置详解

  • qq_15571649
  • qq_15571649
  • 2017年02月04日 21:37
  • 1544

Hibernate中配置文件中设置数据库信息

Hibernate中配置文件中设置数据库信息 在对数据库进行操作时,经常会遇到乱码的问题,往数据库中存入汉字时会存不进去,乱码!所以当建立所有文件时一定要统一编码,和数据库以及表的编码要一致。这里以...
  • fpxty
  • fpxty
  • 2017年04月15日 22:28
  • 630
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Ant+xdoclet管理hibernate配置文件
举报原因:
原因补充:

(最多只允许输入30个字)