`
sqe_james
  • 浏览: 264822 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ant Task结合Hibernate Tools3.x快速开发

    博客分类:
  • J2EE
阅读更多

最近看Hibernate Reference 文档时,发现Hibernate Tools 3.x 这官方推荐的工具已经很强大了。由于之前开发如有用到Hibernate的 一般直接在Ant Task 中结合xdoclet2 来生成相关代码,在代码中有较好的标注才能生成质量过得去的代码,不是很方便。按开发流程我们一般需求分析时,会用PowerDesigner 一边讨论一边 开始建模,最后生成相关DataBase Schema,由于PD的强大功能,用它来生成各种DB的Schema方便高效,主要以后变更DB时会很方便,代码质量也不错,当然它也能直接生成POJO看个人爱好了。

 

我的开发流程一般是PD CDM确定主要结构(建模分析)--->生成PDM,根据需要作相应调整--->相应DB的Schema--->生成*.hbm.xml,POJO和cfg.xml--->根据情况微调后,开始开始DAO层--->。。。。。。结合hibernate tools完成这一系列会相当轻松。但每个团队的实际情况不同,根据自身情况选择最佳方式。下面就Ant Task结合hibernatetool作个说明。

 

1. Ant 构建环境

 先到 Hibernate 官网下载最新的 Hibenate Tools 解压后把 /plugins/org.hibernate.eclipse.x.x.x/lib/tools 目录下的 *.jar copy ANT 构建环境中。 e.g.

<path id="toolslib">
 <path location="lib/hibernate-tools.jar" />
 <path location="lib/hibernate3.jar" />
 <path location="lib/freemarker.jar" />
 <path location="${jdbc.driver.jar}" />
</path>
<taskdef name="hibernatetool" 
         classname="org.hibernate.tool.ant.HibernateToolTask" 
         classpathref="toolslib" />

 

2. 建立全局ANT Task

其实一般用途的话,这个工具中就 <hibernatetool> 这个属性最主要。可以把它配置成全局的task 以便其它多处引用。具体格式如下:

<hibernatetool
  destdir="defaultDestinationDirectory"
  templatepath="defaultTemplatePath">
  <classpath ...>
  <property key="propertyName" value="value"/>
  <propertyset ...>
  (<configuration ...>|<annotationconfiguration ...>|
   <jpaconfiguration ...>|<jdbcconfiguration ...>)
  (<hbm2java>,<hbm2cfgxml>,<hbmtemplate>,...)  
</hibernatetool>

 你可以选其中的一项或多项。hibernatetool属性如下表:

属性名称 定义 使用情况
destdir 生成文件的输入目录 Required
templatepath 用户编辑模板的路径 Optional
classpath 解析资源时的依赖环境 Optional,但通常是要求
property(and propertyset) 控制输出的属性设置,大部分与用户定义模板提供属性有关。 Optional

configuration

(annotationconfiguration, jpaconfiguration,

jdbcconfiguration)

必须为Hibernate元模型指定四个属性之一。 Required

hbm2java(hbm2cfgxml,

hbmtemplate, etc.)

指定一个或多个的输出方式 Required

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

下面举个例子:

<hibernatetool destdir="${build.dir}/generated">
 <classpath/>
 <configuration configurationfile="hibernate.cfg.xml"/>
 <!-- 用户模板 -->
 <hbmtemplate exporterclass="my.own.Exporter" filepattern="."/>
</hibernatetool>

注意: 以前的用户定义模板用Velocity ,现在开始使用Freemarker ,它提供给我们更好的异常和错误处理方式。

 

也可以简单地如下定义:

<taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" 
               classpathref="classpath" />

 

3. 建立由DB到映射文件,POJO及配置文件的任务

由于有前面的全局定义,接下来的任务,既可以定义在一个target中,也可以分多个target来定义,看实际需求。先定义一下数据库属性文件hibernate.properties

hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/vote?useUnicode=true&amp;characterEncoding=utf8
hibernate.connection.username=root
hibernate.connection.password=junwei
hibernate.dialect=org.hibernate.dialect.MySQLDialect

 接着就可以定义相关任务了:

<target name="hibernatecode">
  <!-- destdir属性可以在各输出属性中分别指定,这里是全局指定 -->
  <hibernatetool destdir="${build.dir}/generated">
    <!-- packagename表生成文件的存放包名 -->
    <jdbcconfiguration propertyfile="hibernate.properties" packagename="sqe.janier.model"/>
    <!-- 由DB导出hbm.xml文件 -->
    <hbm2hbmxml />
    <!-- 由hbm.xml文件生成POJO文件 -->
    <hbm2java jdk5="true" />
    <!-- 生成配置文件 -->
    <hbm2cfgxml ejb3="false" />
    <!-- 生成各POJO的相应DAO类,除非有定义自己的模板,否则这个功能别用 -->
    <hbm2dao />
    </hibernatetool>
</target>

 官方文档中还有其它很输出和定义形式,具体参看 Hibernate Tools Reference Guide

 

4. hibernate 包中自带的Schema 生成工具

举个例子,schema 的生成,更新和验证ant task ,各参数说明见Hibernate Reference Toolset Guide

<target name="schemaexport">
  <taskdef name="schemaexport" 
                 classname="org.hibernate.tool.hbm2ddl.SchemaExportTask" 
                 classpathref="classpath" />
  <schemaexport properties="hibernate.properties" quiet="no" text="no" drop="no" 
        delimiter=";" output="schema-export.sql">
    <fileset dir="${src.dir}">
      <include name="**/*.hbm.xml" />
    </fileset>
  </schemaexport>
</target>

<target name="schemaupdate">
  <taskdef name="schemaupdate" 
                 classname="org.hibernate.tool.hbm2ddl.SchemaUpdateTask" 
                 classpathref="classpath" />
  <schemaupdate properties="hibernate.properties" quiet="no">
    <fileset dir="${src.dir}">
      <include name="**/*.hbm.xml" />
    </fileset>
  </schemaupdate>
</target>

<target name="schemavalidate">
  <taskdef name="schemavalidator" 
                 classname="org.hibernate.tool.hbm2ddl.SchemaValidatorTask"
                 classpathref="classpath" />
  <schemavalidator properties="hibernate.properties">
    <fileset dir="${src.dir}">
      <include name="**/*.hbm.xml" />
    </fileset>
  </schemavalidator>
</target>

 其实这些功能hibernate tools 都也具备的如hbm2ddl ,只是看各人喜欢,生成代码质量都不错。

 

 

 

分享到:
评论

相关推荐

    ant.jar下载

    org.apache.tools.ant.Task org.apache.tools.bzip2.CRC org.apache.tools.ant.Target org.apache.tools.ant.Project org.apache.tools.zip.ZipFile org.apache.tools.zip.ZipLong org.apache.tools.ant....

    org.apache.tools.*需要的ant.jar包

    标题中的"org.apache.tools.*需要的ant.jar包"指的是Apache Ant的核心库,这个库包含了`org.apache.tools`包下的一系列类和接口,它们是Ant运行时不可或缺的部分。在Java项目中,如果你需要通过代码来调用Ant进行...

    Ant Design3.x Axure

    总结来说,Ant Design 3.x Axure是将Ant Design的设计理念和组件体系与Axure的强大原型设计能力相结合的产物,它为UI设计师提供了丰富的设计资源,使得原型设计更加便捷、高效,同时也保证了设计的专业性和一致性。...

    HibernateTools-3.2.4.Beta1-R200810311334.zip

    HibernateTools是Java开发者的重要辅助工具,它为Hibernate框架提供了一系列实用的集成开发环境(IDE)插件和命令行工具,极大地简化了数据操作和对象关系映射(ORM)的工作流程。在本次分享中,我们将深入探讨...

    基于vite2.x + vue3.x + ant-design-vue3.x + typescript基础后台管理系统模板

    【描述】:这个项目是一个现代的、高效的基础后台管理系统模板,它结合了最新的前端技术栈,包括vite2.x作为构建工具,vue3.x作为前端框架,ant-design-vue3.x用于UI组件,以及typescript提供静态类型检查和更强大的...

    org.apache.tools.ant.jar(1.9.7)

    ant自定义任务时需要继承org.apache.tools.ant.Task类,而MyEclipse居然没有这个jar包.费了好大劲找到个,版本还算新.

    ant-task-1.3.2.jar.zip

    同时,压缩包内的“ant.license.txt”可能是Ant Task的许可协议文件,详细规定了该库的使用条款和限制。 依赖包的概念在Java开发中是非常常见的。Ant Task 1.3.2.jar可能依赖于其他库来实现其功能,比如Ant Contrib...

    hibernate tools源码运行或修改需要的jar

    Hibernate Tools 是一个强大的开发工具,它为Hibernate ORM框架提供了丰富的集成开发环境支持,包括逆向工程(从数据库生成实体类)、代码生成、JPA支持以及HQL和SQL查询的调试等。要运行或修改Hibernate Tools的...

    AntTask手册(英文).chm

    Ant Task手册

    ant-1.7.1(org.apache.tools.zip.ZipOutputStream).zip

    在本篇中,我们将深入探讨`ant-1.7.1(org.apache.tools.zip.ZipOutputStream).zip`这个特定的压缩包以及它所涉及的知识点。 标题中的"ant-1.7.1"指的是Apache Ant的一个版本,这表明我们要讨论的是Apache Ant 1.7.1...

    org.apache.tools.*的jar包,ant-build.jar

    import org.apache.tools.*; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; 等

    摸鱼低代码前端采用 Vue3.x、Vite5.x、 Ant-Design-Vue4.x、TypeScript 等新技.zip

    Vue3.x的Composition API和响应式优化,Vite5.x的快速开发体验,Ant-Design-Vue4.x的美观组件库,以及TypeScript的类型安全,共同构建了一个现代、高效的前端开发环境。这样的技术栈不仅能够帮助开发者快速构建应用...

    sonar-ant-task-2.1.jar

    &lt;taskdef resource="org/sonar/ant/taskdefs/ant.properties"&gt; &lt;classpath path="path/to/sonar-ant-task-2.1.jar"/&gt; &lt;sonar:sonar xmlns:sonar="antlib:org.sonar.ant"&gt; &lt;property name="sonar.host.url" ...

    AntDesign3.9.x.zip

    总的来说,AntDesign3.9.x.zip为Axure用户带来了一个高质量、高效的Ant Design组件库,对于需要快速构建美观且一致的Web应用原型的设计师来说,是一个不可多得的工具。不过,如果项目同时涉及移动端设计,用户可能...

    antTask.jar.zip

    在AntTask.jar.zip压缩包中,我们还发现了ant.license.txt文件。这通常意味着该库遵循特定的开源许可协议,允许开发者在遵守协议条款的情况下自由使用、修改和分发AntTask.jar。阅读这个文件对于理解使用限制和责任...

    sonar-ant-task-2.1.jar.zip

    ant 任务 jar 包,有些 java 开源项目依赖 sonar-ant-task-2.1.jar 包构建,如 nutch。使用方法,下载后解压为 .jar 文件,复制到 ant/lib/ 目录下即可使用。

    ant-design-vue3.x的form表单爬坑.pdf

    在Ant Design Vue 3.x版本中,表单的使用与之前版本有了一些显著的变化,特别是对于嵌套表单的处理和验证方式。本文将详细解析这些变化,帮助开发者避免在升级过程中遇到的“坑”。 首先,让我们关注的是嵌套表单...

    sonar-ant-task-2.2.jar.zip

    ant 的 sonar-ant-task 依赖 jar 包,有些 java 开源项目依赖此包编译,nutch 就是其中之一,此为 2.2 版本。下载 sonar-ant-task-2.2.jar.zip 解压为 .jar 文件,复制到 ant/lib/ 目录下即可使用。

    管理系统系列--基于 vite5.x + vue3.x + ant-design-vue4.x + typescri.zip

    管理系统系列的构建通常涉及到前端开发框架的选取与整合,这个项目使用了最新的技术栈,包括 vite5.x、vue3.x、ant-design-vue4.x 和 TypeScript。这些技术都是目前非常热门且高效的工具,它们共同为构建高效、稳定...

Global site tag (gtag.js) - Google Analytics