xdoclet+ant自己主动生成hibernate配置文件

cynchanpin      2022-02-12     693

关键词:

       在使用Hibernate的时候,过多的Hibernate配置文件是一个让人头疼的问题。

近期接触了Xdoclet这个工具。

它实际上就是一个自己主动代码生成的工具。Xdoclet不能单独执行,必须搭配其它工具一起使用,比方ant。

假设ant的工具不会用。建议先补充一下ant的基本知识在来学习Xdoclet。

    

Ant是什么?

       Apache Ant 是一个基于 Java的生成工具。生成工具在软件开发中用来将源码和其它输入文件转换为可运行文件的形式(也有可能转换为可安装的产品映像形式)。

随着应用程序的生成过程变得更加复杂。确保在每次生成期间都使用精确同样的生成步骤。同一时候实现尽可能多的自己主动化,以便及时产生一致的生成版本号.

    很多其它的内容自己课下多多学习使用,不在阐述。


XDoclet是什么?

        XDoclet能够通过你在java源码中的一些特殊的凝视信息,自己主动为你生成配置文件、源码等等,比如web、ejb的部署描写叙述文件、为你生成struts的struts-config.xml配置文件、javascript校验等。


1.下载Xdoclet,解压。

2.在ant的build.xml中定义xdoclet任务


在这里我们做的是依据hibernate实体类生成hibernate映射文件。所以得先有Hibernate的实体类。


Person实体类:


<span style="font-size:18px;"><span style="font-size:18px;">package com.bjsxt.oa.model;

/**
 * 
 * @author Administrator
 * @hibernate.class table="T_Person"
 */
public class Person {
	
	/**
	 * @hibernate.id
	 * 		generator-class="native"
	 */
	private int id;
	
	/**
	 * @hibernate.property
	 */
	private String name;
	
	/**
	 * @hibernate.property
	 */
	private String sex;
	
	/**
	 * @hibernate.property
	 */
	private String address;
	
	/**
	 * @hibernate.property
	 */
	private String duty;
	
	/**
	 * @hibernate.property
	 */
	private String phone;
	
	/**
	 * @hibernate.property
	 */
	private String description;
	
	/**
	 * @hibernate.many-to-one
	 */
	private Orgnization org;
	
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public String getDuty() {
		return duty;
	}
	public void setDuty(String duty) {
		this.duty = duty;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Orgnization getOrg() {
		return org;
	}
	public void setOrg(Orgnization org) {
		this.org = org;
	}
}
</span></span>

在实体类上加上对应的注解后,在ant中定义一个新的xdoclet任务。



<span style="font-size:18px;"><span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?

> <project name="OA系统构建脚本" default="生成Hibernate配置文件" basedir="."> <property name="src.dir" value="${basedir}/src"/> <property name="build.dir" value="${basedir}/bin"/> <property name="webapp.dir" value="${basedir}/src/webapp"/> <property name="xdoclet.home" value="D:xdoclet-plugins-1.0.3"/> <!-- Build classpath --> <path id="xdoclet.task.classpath"> <fileset dir="${xdoclet.home}/lib"> <include name="**/*.jar"/> </fileset> <fileset dir="${xdoclet.home}/plugins"> <include name="**/*.jar"/> </fileset> </path> <taskdef name="xdoclet" classname="org.xdoclet.ant.XDocletTask" classpathref="xdoclet.task.classpath" /> <target name="生成Hibernate配置文件"> <xdoclet> <fileset dir="${src.dir}/com/bjsxt/oa/model"> <include name="**/*.java"/> </fileset> <component classname="org.xdoclet.plugin.hibernate.HibernateConfigPlugin" destdir="${src.dir}" version="3.0" hbm2ddlauto="update" jdbcurl="jdbc:mysql://127.0.0.1/oa" jdbcdriver="com.mysql.jdbc.Driver" jdbcusername="root" jdbcpassword="123456" dialect="org.hibernate.dialect.MySQLDialect" showsql="true" /> </xdoclet> </target> <target name="生成hibernate映射文件"> <xdoclet> <fileset dir="${src.dir}/com/bjsxt/oa/model"> <include name="**/*.java"/> </fileset> <component classname="org.xdoclet.plugin.hibernate.HibernateMappingPlugin" version="3.0" destdir="${src.dir}" /> </xdoclet> </target> </project> </span></span>


点击Ant插件构建插件


技术分享

生成的Person.hbm.xml


<span style="font-size:18px;"><span style="font-size:18px;"><?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
  <class table="T_Person" name="com.bjsxt.oa.model.Person">
    <id name="id">
      <generator class="native"/>
    </id>
    <property name="name"/>
    <property name="sex"/>
    <property name="address"/>
    <property name="duty"/>
    <property name="phone"/>
    <property name="description"/>
    <many-to-one name="org"/>
  </class>
</hibernate-mapping>
</span></span>

hibernate.cfg.xml


<span style="font-size:18px;"><span style="font-size:18px;"><?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1/oa</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">123456</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.hbm2ddl.auto">update</property>
    <mapping resource="com/bjsxt/oa/model/Orgnization.hbm.xml"/>
    <mapping resource="com/bjsxt/oa/model/Person.hbm.xml"/>
  </session-factory>
</hibernate-configuration>
</span></span>

   在本文中能够看到。在理解了Hibernate核心之后,我们能够採用这一的工具来帮助我们开开发。Ant在自己主动构建和部署Java程序方面方便易用,不easy不错,并且很灵活,不失为我们Java开发人员的绝佳帮手。





















flexasdoc完整版

...工具。过程例如以下:配置完毕后,直接单击执行button就自己主动生成AsDoc文档了。(注:这样的方式生成的AsDoc,main-title和window-title參数会出现中文乱码,眼下没有解决。ANT方式不会有乱码。 查看详情

thewordisnotcorrectlyspelled问题解决

今天在做Ant/Xdoclet辅助生成hibernate实体映射文件时,eclipse出现了极其让我郁闷的错误,"Thewordisnotcorrectlyspelled"。然后我继续将代码执行下去,居然执行没有问题,还真的生成了实体映射文件。原来是eclipse的问题,打开eclipse,我... 查看详情

xcode经常使用插件使用及自己主动生成帮助文档

*一、Xcode插件下载:*VVDocumenter下载:https://github.com/onevcat/VVDocumenter-XcodeXcode经常使用插件下载:http://pan.baidu.com/s/1sjLnUFj*二、VVDocumenter安装方法:*ThebestwayofinstallingisbyAlcatraz.InstallAlcatrazfollowedby 查看详情

一个自己主动依据xcode中的objective-c代码生成类关系图的神器

https://github.com/kimsungwhee/KSHObjcUML安装方法:1、下载项目2、执行3、会又一次开启一个新的xcode4、选择一个项目,点击Objc-UML会自己主动生成并打开生成的类图。效果图不上了。用用试试。 查看详情

bzoj1030:[jsoi2007]文本生成器(ac自己主动机上的dp)

1030:[JSOI2007]文本生成器TimeLimit: 1Sec  MemoryLimit: 162MBSubmit: 2635  Solved: 1090[Submit][Status][Discuss]DescriptionJSOI交给队员ZYX一个任务。编制一个称之为“文本生成器”的电脑软件:该软件的使用者 查看详情

自己主动图片生成在前端开发中的一些尝试

图片处理在前端开发过程中占领了不少的时间。非常是累人。在本文中我们不讨论怎样提高切图的效率。我们讨论还有一个问题:怎样处理设计稿中的一些简单图形。不知道你又没有遇到过这样的烦恼:“设计师给你的精致的PSD... 查看详情

怎样避免在ef自己主动生成的model中的dataannotation被覆盖掉

...分类名称与Employee类同名(注意:该类的命名空间必须与自己主动生成的类属于同一个命名空间),类内容为空的就能够。然后在新建的部分类下 查看详情

知识点

...rty属性后,有2种实现选择@synthesize编译器期间,让编译器自己主动生成getter/setter方法。当有自己定义的存或取方法时,自己定义会屏蔽自己主动生成该方法 @dynamic告诉编译器。不自己主动生成getter/setter方法。避免编译期间... 查看详情

java.lang.unsupportedclassversionerror:xjavadoc/ant/xjavadoctask解决办法

Buildfile:D:/1/eclipse/workspace/ejbdemo/.xdoclet-build.tmp.xmlN65540:BUILDFAILEDjava.lang.UnsupportedClassVersionError:xjavadoc/ant/XJavadocTask(Unsupportedmajor.minorversion49.0)Totaltime:2secondsN6 查看详情

2014-3-4大规模无缝水陆导航图

...了太多工作,譬如所配套的大规模无缝水陆两栖导航图的自己主动生成和使用. 这两天在搞战斗时,发现曾经做的导航图有些瑕疵,抽时间改进了一下.以下做个总结:1.导航图的自己主动生成:2.所生成的导航图:3.基于所生成的导航... 查看详情

hibernate入门简介----张冬

...了很多非Hibernate的东西,比如:Tomcat,Eclipse,Log4J,Struts,XDoclet,甚至JBoss。这容易让人产生Hibernate复杂难懂的误解,特别是打击了初学者的积极性。在这篇文章将不涉及Eclipse,log4j,Struts,Tomcat,XDoclet,和JBoss。本文的目的是演... 查看详情

(插播)关于使用jenkins+unity+xcode来进行自己主动打包的处理。

...是方便。设置好流程性得命令。仅仅需确定下就能够达到自己主动化。减轻了错误得发生和简化了带来的复杂得步骤。今天我们就以jenkins用来编译unity生成APK包和ipa文件为样例。做一个学习。平时做项目须要团队之间的合作。假... 查看详情

后缀自己主动机(sam)学习指南

*在学习后缀自己主动机之前须要熟练掌握WA自己主动机、RE自己主动机与TLE自己主动机*什么是后缀自己主动机后缀自己主动机SuffixAutomaton(SAM)是一个用O(n)的复杂度构造。可以接受一个字符串全部后缀的自己主动机。它最早在... 查看详情

gradle打包android(实现外部导入签名文件多渠道打包导入ant脚本)

    近期一直在做android自己主动打包,之前已经完毕了用纯命令行的形式打包、原生态ant脚本打包。和基于android的SDK的打包。而且实现了多渠道打包,后来同事推荐了gradle,网上的资料说gradle各种好,自己也感兴趣... 查看详情

自己定义控件-multipletextview(自己主动换行自己主动补齐宽度的排列多个textview)

一、功能:1、传入一个List<String>数组,控件会自己主动加入TextView,一行显示不下会自己主动换行。而且把上一行末尾的空白通过拉伸而铺满。2、配置灵活<com.dd544.bu.MultipleTextViewxmlns:my="http://schemas.android.com/apk/res-auto"androi... 查看详情

利用rman自己主动备份转储spfile

利用rman自己主动备份转储spfile 【情景简单介绍】生产环境丢失了server的參数文件,rman已开启自己主动备份设置。【操作过程简述】----启动rman$rmantarget/----检查rman设置RMAN>showall;----配置一遍rman自己主动备份控制文件。模拟... 查看详情

ac自己主动机模板

AC自己主动机模板……/** AC自己主动机模板* 用法:* 1、init():初始化函数* 2、insert(str):插入字符串函数* 3、build():构建ac自己主动机* 4、query(str): 返回出现的字符串个数** 使用需注意事项:* 1、注意输入的字符的范围,... 查看详情

dockerhub基于github自己主动化构建

DockerHub上的自己主动化构建关于自己主动化构建自己主动化构建是一个特殊的功能,它同意您在DockerHub上使用构建集群,依据指定的 Dockerfile 或者GitHub、BitBucket仓库(或环境)来自己主动创建镜像。该系统将从仓库复制... 查看详情