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语句。

此时工程的目录为:

 

  

用Spring管理Hibernate连接多个数据源配置文件

Spring2.0.1以后的版本已经支持配置多数据源,并且可以在运行的时候动态加载不同的数据源。通过继承AbstractRoutingDataSource就可以实现多数据源的动态转换。目前做的项目就是...
  • oathevil
  • oathevil
  • 2012-02-08 21:50:41
  • 4684

Hibernate 管理 Session

~~~~~~~~~~~~~~~~~~~~~~~~~~分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  管理Session  一. Hibernate 自身提供了 ...
  • chuck_kui
  • chuck_kui
  • 2016-06-09 15:18:11
  • 1183

springMVC+Hibernate4+Spring整合一(配置文件部分)

本实例采用
  • Edwards_June
  • Edwards_June
  • 2014-09-07 14:56:18
  • 2072

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

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

Hibernate读取配置文件,创建sessionFactory的执行过程以及用工具类优化

hibernate.cfg.xml被称为核心配置文件 实体类名.hbm.xml被称为映射文件记忆就像运行内存一样,一次开机,疯狂读取数据,一次关机,清空所有内存!!Hibernate核心API的基本使...
  • Marvel__Dead
  • Marvel__Dead
  • 2017-03-11 11:31:52
  • 1894

Ant+XDoclet生成配置文件

Ant是一个构建工具1.     从www.apache.org ant 下载apache-ant-1.7.12.     配置环境变量:2.1添加环境变量变量名:ANT_HOME变量值:E:/apa...
  • salasay
  • salasay
  • 2009-03-02 16:09:00
  • 1391

spring与hibernate整合配置文件含连接池

spring的整个配置内容,对于项目整合最好是分开
  • wsnaxw
  • wsnaxw
  • 2016-08-08 22:33:57
  • 1752

Struts2+spring+hibernate的配置文件配置

Struts2+spirng+hibernate的配置文件-文档式新人贴:声明:这是我在Java培训学习阶段的配置文件并不能使用真正开发的环境,只能用于学习与借鉴.本文章的重点在于applicatio...
  • qq_35976271
  • qq_35976271
  • 2017-01-04 20:45:18
  • 1359

hibernateJar资源包

  • 2018年03月14日 14:19
  • 1KB
  • 下载

Hibernate配置文件

  • 2008年05月19日 18:55
  • 167KB
  • 下载
收藏助手
不良信息举报
您举报文章:Ant+xdoclet管理hibernate配置文件
举报原因:
原因补充:

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