`
fosa0989
  • 浏览: 110240 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用XDoclet反向生成hibernate映射文件和DDL

阅读更多

1 在编写vo文件时候在类和字段的注释上添加xdoclet使用的信息

import java.util.Calendar;
import java.util.Set;
import java.io.Serializable;
/**
 * @author Chenhui
 * @hibernate.class table="TB_User"
 */
public class User implements Serializable {

	private static final long serialVersionUID = -4208021481713010569L;
	private Long userID;
	private Organization organization;//机构
	private Organization department;//部门
	private String userSN;
	private String loginName;
	private String password;
	private String userName;
	private String email;
	private int sex;
	private String address;
	private Calendar birthday;
	private String postalCode;
	private String mobilePhone;
	private String QQ;
	private String MSN;
	private int status;
	private Set groups;
	private Set privileges;
		
	public static final int STATUS_USABLE=1;// ok to use
	public static final int STATUS_UNABLE=2;// deleted	
	public static final int SEX_MALE=1;
	public static final int SEX_FEMALE=2;
	
	public User(){}
	public User(long uid){this.userID=uid;}
	/**
	 * @return the userID
	 * @hibernate.id column="UserID" generator-class="increment" unsaved-value="null"
	 */
	public Long getUserID() {
		return userID;
	}

	/**
	 * @param userID the userID to set
	 */
	public void setUserID(Long userID) {
		this.userID = userID;
	}

	/**
	 * @return the userSN
	 * @hibernate.property column="UserSN" length="10" non-null="true" unique="true"
	 */
	public String getUserSN() {
		return userSN;
	}

	/**
	 * @param userSN the userSN to set
	 */
	public void setUserSN(String userSN) {
		this.userSN = userSN;
	}

	/**
	 * @return the loginName
	 * @hibernate.property column="LoginName" length="20" non-null="true" unique="true"
	 */
	public String getLoginName() {
		return loginName;
	}

	/**
	 * @param loginName the loginName to set
	 */
	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}

	/**
	 * @return the password
	 * @hibernate.property column="Password" length="20" non-null="true" unique="false"
	 */
	public String getPassword() {
		return password;
	}

	/**
	 * @param password the password to set
	 */
	public void setPassword(String password) {
		this.password = password;
	}

	/**
	 * @return the userName
	 * @hibernate.property column="UserName" length="20" non-null="false" unique="false"
	 */
	public String getUserName() {
		return userName;
	}

	/**
	 * @param userName the userName to set
	 */
	public void setUserName(String userName) {
		this.userName = userName;
	}

	/**
	 * @return the sex
	 * @hibernate.property column="Sex"
	 */
	public int getSex() {
		return sex;
	}

	/**
	 * @param sex the sex to set
	 */
	public void setSex(int sex) {
		this.sex = sex;
	}

	/**
	 * @return the email
	 * @hibernate.property column="Email" length="40" non-null="false" unique="false"
	 */
	public String getEmail() {
		return email;
	}

	/**
	 * @param email the email to set
	 */
	public void setEmail(String email) {
		this.email = email;
	}

	/**
	 * @return the address
	 * @hibernate.property column="Address" length="80" non-null="false" unique="false"
	 */
	public String getAddress() {
		return address;
	}

	/**
	 * @param address the address to set
	 */
	public void setAddress(String address) {
		this.address = address;
	}

	/**
	 * @return the birthday
	 * @hibernate.property column="Birthday"
	 */
	public Calendar getBirthday() {
		return birthday;
	}

	/**
	 * @param birthday the birthday to set
	 */
	public void setBirthday(Calendar birthday) {
		this.birthday = birthday;
	}

	/**
	 * @return the postalCode
	 * @hibernate.property column="PostalCode" length="10" non-null="false" unique="false"
	 */
	public String getPostalCode() {
		return postalCode;
	}

	/**
	 * @param postalCode the postalCode to set
	 */
	public void setPostalCode(String postalCode) {
		this.postalCode = postalCode;
	}

	/**
	 * @return the mobilePhone
	 * @hibernate.property column="MobilePhone" length="20" non-null="false" unique="false"
	 */
	public String getMobilePhone() {
		return mobilePhone;
	}

	/**
	 * @param mobilePhone the mobilePhone to set
	 */
	public void setMobilePhone(String mobilePhone) {
		this.mobilePhone = mobilePhone;
	}

	/**
	 * @return the qQ
	 * @hibernate.property column="QQ" length="20" non-null="false" unique="false"
	 */
	public String getQQ() {
		return QQ;
	}

	/**
	 * @param qq the qQ to set
	 */
	public void setQQ(String qq) {
		QQ = qq;
	}

	/**
	 * @return the mSN
	 * @hibernate.property column="MSN" length="40" non-null="false" unique="false"
	 */
	public String getMSN() {
		return MSN;
	}

	/**
	 * @param msn the mSN to set
	 */
	public void setMSN(String msn) {
		MSN = msn;
	}

	/**
	 * @return the status
	 * @hibernate.property column="Status"
	 */
	public int getStatus() {
		return status;
	}

	/**
	 * @param status the status to set
	 */
	public void setStatus(int status) {
		this.status = status;
	}

	/**
	 * @return the organization
	 * @hibernate.many-to-one column="OrganizationID" non-null="false" lazy="true"
	 */
	public Organization getOrganization() {
		return organization;
	}

	/**
	 * @param organization the organization to set
	 */
	public void setOrganization(Organization organization) {
		this.organization = organization;
	}

	/**
	 * @return the department
	 * @hibernate.many-to-one column="DepartmentID" non-null="false" lazy="true"
	 */
	public Organization getDepartment() {
		return department;
	}

	/**
	 * @param department the department to set
	 */
	public void setDepartment(Organization department) {
		this.department = department;
	}

	/**
	 * @return the groups
	 * Group来管理关联关系,默认不抓取
	 * @hibernate.set table="TB_UserGroup" cascade="none" inverse="true" lazy="true" 
	 * @hibernate.collection-key column="UserID"
	 * @hibernate.collection-many-to-many column="GroupID" 
     *  class="com.sst.framework.administration.vo.Group" 
	 */
	public Set getGroups() {
		return groups;
	}

	/**
	 * @param groups the groups to set
	 */
	public void setGroups(Set groups) {
		this.groups = groups;
	}

	/**
	 * @return the privileges
	 * User来管理关联关系,默认不抓取
	 * @hibernate.set table="TB_UserPrivilege" cascade="all" inverse="false" lazy="true" 
	 * @hibernate.collection-key column="UserID"
	 * @hibernate.collection-many-to-many column="PrivilegeID" 
     *  class="com.sst.framework.administration.vo.Privilege" 
	 */
	public Set getPrivileges() {
		return privileges;
	}

	/**
	 * @param privileges the privileges to set
	 */
	public void setPrivileges(Set privileges) {
		this.privileges = privileges;
	}
}

 2 编写ant配置文件

    注意,hibernate的配置文件不须再包含映射文件,否则会出现重复错误

<?xml version="1.0"?>

<project name="administration" default="hibernate" basedir=".">
	<property name="admin.db"			 value="mysql"/>
	<property name="admin.home"		     value="${basedir}"/>
	<property name="admin.lib"		     value="${admin.home}/lib"/>
	<property name="build.classes"		 value="${admin.home}/WebRoot/WEB-INF/classes"/>
	<property name="hibernate.cfg"		 value="${admin.home}/Docs/hibernate_${admin.db}.cfg.xml"/>	
	
    <path id="myclasspath">
    	<fileset dir="${admin.lib}/hibernate3.2.6" includes="**/*.jar"/>
    	<fileset dir="${admin.lib}/xdoclet1.2.3" includes="**/*.jar"/>
    	<fileset dir="${admin.home}/lib" includes="**/*.jar" />  	
    	<pathelement path="WebRoot/WEB-INF/classes"/>
    </path>
	<!-- ================================================================== -->
	<!-- == generate Hibernate mappings                                     -->
	<!-- ================================================================== -->	
     <taskdef
        name="hibernatedoclet"
        classname="xdoclet.modules.hibernate.HibernateDocletTask"
        classpathref="myclasspath"
        />
    <target name="hibernate" description="Generate mapping documents">

        <echo>+---------------------------------------------------+</echo>
        <echo>|                                                   |</echo>
        <echo>| R U N N I N G   H I B E R N A T E D O C L E T     |</echo>
        <echo>|                                                   |</echo>
        <echo>+---------------------------------------------------+</echo>

        <hibernatedoclet
            destdir="${admin.home}/src"
            excludedtags="@version,@author,@todo,@see"
            addedtags="@xdoclet-generated at ${TODAY},@copyright The XDoclet Team,@author XDoclet,@version ${version}"
            force="false"
            verbose="true">

            <fileset dir="${admin.home}/src">
				<exclude name="com/vo/BaseObject.java" />
				<include name="com/vo/*.java" />
            </fileset>

        	<hibernate validatexml="true" version="3.0"/>

        </hibernatedoclet>
    </target>
	<!-- ================================================================== -->
	<!-- == generate DDL with hibernate tools                               -->
	<!-- ================================================================== -->
	<target name="gen-ddl" description="Hibernate Tools generate DDL">
		<taskdef
		    name="hibernatetool"
		    classname="org.hibernate.tool.ant.HibernateToolTask"
	        classpathref="myclasspath" />

		<!-- generate database DDL -->
		<hibernatetool destdir="${admin.home}/metadata/database">
			<classpath>
				<path location="${admin.home}/webapp/WEB-INF/classes"/>
			</classpath>
			<configuration configurationfile="${hibernate.cfg}" >
				<fileset dir="${admin.home}/src/com/vo">
					<include name="**/*.hbm.xml"/>
				</fileset>
			</configuration>
			<hbm2ddl export="false" delimiter=";" format="true" outputfilename="schema_${admin.db}.sql"/>
		</hibernatetool>
	</target>	
	
</project>

 3 运行ant编译生成hbm文件和DDL,注意运行顺序

0
1
分享到:
评论

相关推荐

    Hibernate使用xdoclet生成映射文件和sql语句

    这篇博客文章“Hibernate使用xdoclet生成映射文件和sql语句”可能详细介绍了如何结合这两个工具进行开发。 在早期的Java开发中,XDoclet是基于Javadoc注解的工具,它可以解析Java类中的特定注解,并根据这些注解...

    XDoclet 与Hibernate 映射

    XDoclet 是一款强大的Java注解处理工具,它允许开发者在Java源代码中添加元数据,这些元数据可以用来自动生成各种配置文件,包括Hibernate的映射文件(hbm.xml)。这种方式极大地提高了开发效率,避免了手动创建和...

    用maven的xdoclet插件t生成hibernate配置文件

    ### 使用Maven的Xdoclet插件生成Hibernate配置文件 #### 背景与目标 在软件开发过程中,特别是涉及到数据库交互的应用程序中,Hibernate作为一款流行的Java持久层框架,被广泛应用于对象关系映射(ORM)。而在使用...

    pojo+xDoclet生成ibatis映射文件

    通过使用 XDoclet 和特定的 Javadoc 标签,我们可以为 iBatis 自动生成 SQL 映射文件,这极大地简化了开发过程并提高了开发效率。这种方式尤其适用于那些具有大量实体类和映射关系的项目,能够显著减少手动编写配置...

    Xdoclet入门基础教程

    * 生成 Hibernate 映射文件:Xdoclet 可以生成 Hibernate 映射文件,用于配置数据库表和 Java 类之间的关系。 * 生成 JavaDoc 文档:Xdoclet 可以生成 JavaDoc 文档,用于描述 Java 类和方法的信息。 * 自动生成配置...

    Xdoclet生成*.hbm.xml映射文件

    随着Hibernate的发展,它推荐使用注解(Annotation)直接在Java类上进行ORM配置,取代了Xdoclet生成映射文件的方式。因此,尽管Xdoclet仍有一定的实用性,但在现代开发环境中,直接使用Hibernate注解已成为主流。 ...

    XDoclet2辅助开发hibernate3

    总之,XDoclet2是Hibernate3开发中一个强大的辅助工具,通过自动化的映射文件生成,它简化了开发流程,减少了手动编写和维护XML配置的工作量,让开发者能更专注于业务逻辑和代码质量。对于大型项目或团队开发来说,...

    xdoclet 生成hbm文件

    总之,XDoclet是Java开发中的得力助手,特别是在使用Hibernate时,它能帮助开发者快速生成和维护映射文件,使得代码与数据库之间的关系更加清晰,提升了开发的效率和项目的可维护性。如果想要了解更多关于XDoclet的...

    Ant结合Xdoclet 实例教程(之整合 Hibernate)

    在Java类中,我们只需要添加适当的Javadoc注释,Xdoclet就会根据这些注释生成对应的.hbm.xml映射文件和Hibernate配置文件。而Ant则负责编译源代码、运行Xdoclet以及执行其他构建任务。 具体步骤如下: 1. **设置...

    Java Open Source Programming with XDoclet JUnit WebWork Hibernate

    1. **XDoclet**:XDoclet是一款基于JavaDoc的代码生成工具,它可以自动从Java源代码中的注释生成各种元数据,如Java EE的部署描述符、Hibernate的映射文件等。通过使用XDoclet,开发者可以避免手动编写这些重复性的...

    Ant+XDoclet生成hbm文件

    本篇文章将详细介绍如何使用Ant和XDoclet来生成Hibernate的HBM(Hibernate Mapping)文件。 首先,Ant是一个基于Java的构建工具,它允许开发者通过XML配置文件来定义构建过程,包括编译、打包、测试等任务。Ant的...

    使用xDoclet自动生成Spring的bean的配置文件

    在博文《使用xDoclet自动生成Spring的bean的配置文件》中,作者可能详细介绍了如何配置和使用xDoclet。这可能包括以下几个步骤: 1. **安装xDoclet**:下载xDoclet库并将其添加到项目的构建路径中,如果是Maven项目...

    XDoclet插件包以及从Java持久化类生成hibernate mapping小例子

    总结起来,这个例子展示了如何利用XDoclet插件从Java持久化类自动生成功能强大的Hibernate映射文件和数据库脚本,极大地简化了开发过程,提高了代码的可维护性。通过这种方式,开发者可以更专注于业务逻辑,而非重复...

    xdoclet 用于生成*.hbm.xml

    xdoclet是一款强大的Java文档注解处理器,它在Java源代码中通过特定的注解(annotations)来自动生成各种配置文件,极大地简化了开发过程,尤其是对于Hibernate等持久层框架的使用者。标题提到的"xdoclet 用于生成*....

    为xdoclet添加hibernate智能提示

    当我们在Java类中添加特定的Javadoc标签时,XDoclet会根据这些标签生成相应的Hibernate映射文件(.hbm.xml)和实体类。例如,我们可以使用`@entity`、`@table`、`@id`等标签来定义一个实体类及其与数据库表的关系。 ...

    Hibernate配置文件中映射元素详解

    接着,`&lt;hibernate-mapping&gt;`元素是映射文件的根元素,它可以包含多个配置属性,如`schema`、`default-cascade`、`auto-import`和`package`,分别用于指定数据库模式、默认级联行为、是否自动导入类以及Java类的包名...

    精通代码生成器XDoclet.doc

    * 自动生成 Hibernate 的映射文件 * 自动生成 Web.xml 文件 * 自动生成数据库的 DDL 文件 * 自动生成其他配置文件和数据文件 XDoclet 的优点包括: * 提高开发效率 * 减少代码重复 * 提高代码质量 * 提高开发灵活...

Global site tag (gtag.js) - Google Analytics