最近看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&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
,只是看各人喜欢,生成代码质量都不错。
分享到:
相关推荐
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包"指的是Apache Ant的核心库,这个库包含了`org.apache.tools`包下的一系列类和接口,它们是Ant运行时不可或缺的部分。在Java项目中,如果你需要通过代码来调用Ant进行...
总结来说,Ant Design 3.x Axure是将Ant Design的设计理念和组件体系与Axure的强大原型设计能力相结合的产物,它为UI设计师提供了丰富的设计资源,使得原型设计更加便捷、高效,同时也保证了设计的专业性和一致性。...
HibernateTools是Java开发者的重要辅助工具,它为Hibernate框架提供了一系列实用的集成开发环境(IDE)插件和命令行工具,极大地简化了数据操作和对象关系映射(ORM)的工作流程。在本次分享中,我们将深入探讨...
【描述】:这个项目是一个现代的、高效的基础后台管理系统模板,它结合了最新的前端技术栈,包括vite2.x作为构建工具,vue3.x作为前端框架,ant-design-vue3.x用于UI组件,以及typescript提供静态类型检查和更强大的...
ant自定义任务时需要继承org.apache.tools.ant.Task类,而MyEclipse居然没有这个jar包.费了好大劲找到个,版本还算新.
同时,压缩包内的“ant.license.txt”可能是Ant Task的许可协议文件,详细规定了该库的使用条款和限制。 依赖包的概念在Java开发中是非常常见的。Ant Task 1.3.2.jar可能依赖于其他库来实现其功能,比如Ant Contrib...
Hibernate Tools 是一个强大的开发工具,它为Hibernate ORM框架提供了丰富的集成开发环境支持,包括逆向工程(从数据库生成实体类)、代码生成、JPA支持以及HQL和SQL查询的调试等。要运行或修改Hibernate Tools的...
Ant Task手册
在本篇中,我们将深入探讨`ant-1.7.1(org.apache.tools.zip.ZipOutputStream).zip`这个特定的压缩包以及它所涉及的知识点。 标题中的"ant-1.7.1"指的是Apache Ant的一个版本,这表明我们要讨论的是Apache Ant 1.7.1...
import org.apache.tools.*; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; 等
Vue3.x的Composition API和响应式优化,Vite5.x的快速开发体验,Ant-Design-Vue4.x的美观组件库,以及TypeScript的类型安全,共同构建了一个现代、高效的前端开发环境。这样的技术栈不仅能够帮助开发者快速构建应用...
<taskdef resource="org/sonar/ant/taskdefs/ant.properties"> <classpath path="path/to/sonar-ant-task-2.1.jar"/> <sonar:sonar xmlns:sonar="antlib:org.sonar.ant"> <property name="sonar.host.url" ...
总的来说,AntDesign3.9.x.zip为Axure用户带来了一个高质量、高效的Ant Design组件库,对于需要快速构建美观且一致的Web应用原型的设计师来说,是一个不可多得的工具。不过,如果项目同时涉及移动端设计,用户可能...
在AntTask.jar.zip压缩包中,我们还发现了ant.license.txt文件。这通常意味着该库遵循特定的开源许可协议,允许开发者在遵守协议条款的情况下自由使用、修改和分发AntTask.jar。阅读这个文件对于理解使用限制和责任...
ant 任务 jar 包,有些 java 开源项目依赖 sonar-ant-task-2.1.jar 包构建,如 nutch。使用方法,下载后解压为 .jar 文件,复制到 ant/lib/ 目录下即可使用。
在Ant Design Vue 3.x版本中,表单的使用与之前版本有了一些显著的变化,特别是对于嵌套表单的处理和验证方式。本文将详细解析这些变化,帮助开发者避免在升级过程中遇到的“坑”。 首先,让我们关注的是嵌套表单...
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 和 TypeScript。这些技术都是目前非常热门且高效的工具,它们共同为构建高效、稳定...