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

[hibernate]xdoclet 生成 hbm.xml [one-to-many单向外键]

阅读更多
请大家直接看代码吧.天太热了... 
环境是eclipse ganymede , jdk 6.0, hibernate 3.2, xdoclet1.2.3,ant 1.6.5,mysql5.0

 通过Car 和 Owner的关系可以看出1个Owner可以有0..*个Car

import java.io.Serializable;

/**
 * @hibernate.class table="car"
 * @author Charles King
 *
 */
public class Car implements Serializable{
	private Integer carId;
	
	private String carName;

	/**
	 * @hibernate.id generator-class = "native" column="car_id"
	 * @return
	 */
	public Integer getCarId() {
		return carId;
	}

	public void setCarId(Integer carId) {
		this.carId = carId;
	}

	/**
	 * @hibernate.property column="car_name"
	 * @return
	 */
	public String getCarName() {
		return carName;
	}

	public void setCarName(String carName) {
		this.carName = carName;
	}
	
	
	
}

 

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

/**
 * @hibernate.class table = "owner"
 * @author Charles King
 *
 */
public class Owner implements Serializable {

	private Integer ownerId;
	
	private String ownerName;
	
	private Set cars = new HashSet();

	/**
	 * @hibernate.id generator-class = "native" column = "owner_id"
	 * @return
	 */
	public Integer getOwnerId() {
		return ownerId;
	}

	public void setOwnerId(Integer ownerId) {
		this.ownerId = ownerId;
	}

	/**
	 * @hibernate.property column = "owner_name"
	 * @return
	 */
	public String getOwnerName() {
		return ownerName;
	}

	public void setOwnerName(String ownerName) {
		this.ownerName = ownerName;
	}

	/**
	 * @hibernate.set inverse = "true" cascade = "all"
	 * @hibernate.collection-key column = "car_id"
	 * @hibernate.collection-one-to-many class = "net.alp.model.Car"
	 * @return
	 */
	public Set getCars() {
		return cars;
	}

	public void setCars(Set cars) {
		this.cars = cars;
	}
	
	
}

 

build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project>
	<!-- set properties -->
	<property name="src.dir" value="src"></property>
	<property name="lib.dir" value="lib"></property>
	<property name="build.dir" value="build"></property>
	<property name="dist.dir" value="dist"></property>
	<property name="project_name" value="xdoclet"></property>
	<property file="hibernate.properties"></property>

	<path id="lib.classpath">
		<fileset dir="${lib.dir}">
			<include name="**/*.jar"/>
		</fileset>
	</path>
	
	<path id="src.classpath">
		<pathelement location="${src.dir}"/>
	</path>
	
	<path id="runtime.classpath">
		<path refid="lib.classpath"></path>
		<path refid="src.classpath"></path>
	</path>
	<!-- ================================= 
          target: genate-hiberate3.x            
         ================================= -->
	<target name="gen-hib">
		<taskdef
			name="hibernatedoclet"
			classname="xdoclet.modules.hibernate.HibernateDocletTask"
			classpathref="runtime.classpath"
			>
		</taskdef>
		<hibernatedoclet
			destdir="${src.dir}"
			verbose="true"
			>
			<fileset dir="${src.dir}">
				<include name="**/*.java"/>
			</fileset>
			<hibernate version="3.0"/>
			<hibernatecfg
				dialect="${hibernate.dialect}"
				jdbcUrl="${hibernate.connection.url}"
				driver="${hibernate.connection.driver_class}"
				username="${hibernate.connection.username}"
				password="${hibernate.connection.password}"
				showSql="false"
				version="3.0"
			/>
		</hibernatedoclet>
	</target>
</project>

 

hibernate.properties

hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.connection.url=jdbc:mysql://localhost:3306/test
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.username=root
hibernate.connection.password=root

 

 表建好了,这是用ant生成的SQL

    alter table car 
        drop 
        foreign key FK17FD49D5CA7DA;

    drop table if exists car;

    drop table if exists owner;

    create table car (
        car_id integer not null auto_increment,
        car_name varchar(255),
        primary key (car_id)
    );

    create table owner (
        owner_id integer not null auto_increment,
        owner_name varchar(255),
        primary key (owner_id)
    );

    alter table car 
        add index FK17FD49D5CA7DA (car_id), 
        add constraint FK17FD49D5CA7DA 
        foreign key (car_id) 
        references owner (owner_id);

 

生成这段的SQL在下面补上

	<!-- ================================= 
          target: gen sql              
         ================================= -->
    <target name="gen sql">
        <mkdir dir="sql"/>
    	<java classname="org.hibernate.tool.hbm2ddl.SchemaExport" fork="true">
    		<classpath refid="runtime.classpath"></classpath>
    		<arg value="--text"/>
    		<arg value="--quiet"/>
    		<arg value="--format"/>
    		<arg value="--output=sql/schema.sql"/>
    		<arg value="--properties=${basedir}/hibernate.properties"/>
    		<arg value="--delimiter=;"/>
    		<arg value="${src.dir}/net/alp/model/*.xml"/>
    	</java>
    </target>

 

分享到:
评论
2 楼 bluemusic 2008-07-16  
好的,谢谢提醒.我去看看.
1 楼 Allen 2008-07-15  
Xdoclet这个项目已经死了很久了(据个人所知,一些Hibernate3.0之后才出现的配置它都不支持的),如果很喜欢Annotation的话,就是用Hibernate官方的东西吧。

相关推荐

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

    为了解决这一问题,Xdoclet应运而生,它是一种基于Javadoc注解的工具,能够自动生成Hibernate所需的*.hbm.xml映射文件,极大地提高了开发效率。 一、Xdoclet概述 Xdoclet是一个强大的Javadoc扩展工具,它通过解析...

    xdoclet 用于生成*.hbm.xml

    标题提到的"xdoclet 用于生成*.hbm.xml"表明xdoclet主要被用来自动生成Hibernate的映射文件——.hbm.xml。 Hibernate是一个流行的开源对象关系映射(ORM)框架,它允许开发者使用Java对象来操作数据库,而无需编写...

    xdoclet 生成hbm文件

    《XDoclet 生成 Hibernate 映射文件(HBM)详解》 在Java开发中,尤其是在使用Hibernate框架进行持久化操作时,通常需要为每个Java实体类编写对应的Hibernate映射文件(HBM)。然而,手动编写这些XML文件既耗时又...

    xdoclet-bin-1.2.1.zip和xdoclet-bin-1.2.3.zip

    例如,对于Hibernate,它会生成`.hbm.xml`文件;对于EJB,它会生成`.ejb-jar.xml`等文件。 4. **检查生成的文件**:运行完成后,检查生成的文件是否符合预期,如果有误,需要检查源代码中的注释是否正确,或者调整...

    xdoclet-1.2.1.jar

    《XDoclet-1.2.1.jar:Maven构建中的关键组件》 在软件开发过程中,库和框架的管理是至关重要的。XDoclet-1.2.1.jar是其中的一个关键组件,尤其在使用Maven进行项目构建时。这个特定版本的XDoclet jar文件,对于...

    Ant+XDoclet生成hbm文件

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

    xdoclet-1.2.1.zip

    这个工具在早期的Java EE(当时称为J2EE)时代尤其流行,因为它能够自动根据注解(annotations)生成EJB(Enterprise JavaBeans)、Web服务、Hibernate映射文件以及其他XML配置文件。XDoclet-1.2.1是该工具的一个...

    Xdoclet介绍及示例.........

    1. **ORM映射文件生成**:使用Xdoclet可以根据Java实体类自动生成对应的ORM映射文件,例如Hibernate的`.hbm.xml`文件。 2. **Web服务文档**:对于复杂的Web服务接口,可以使用Xdoclet自动生成WSDL文件或其他相关的...

    quartz-oracle-1.6.0.jar.zip xdoclet-1.2.1.jar.zip下载

    xdoclet插件jar包和quartz-oracle jar包,用于java开发中的外部包。

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

    XDoclet是早期的一个工具,用于自动生成Hibernate的映射文件(.hbm.xml)和SQL语句,这样开发者无需手动编写这些文件,提高了开发效率。这篇博客文章“Hibernate使用xdoclet生成映射文件和sql语句”可能详细介绍了...

    xdoclet-1.2.6.jar

    对于Hibernate,XDoclet能够基于Java持久化类生成HBM XML映射文件,免去了手动编写映射文件的繁琐工作。对于其他框架,XDoclet也能提供类似的自动化支持。 在实际应用中,使用XDoclet有以下几个显著的优点: 1. **...

    Hibernate中的Middlegen入门指南

    然后,将 hibernate2.1.8 下的 hibernate2.jar 及 lib 目录下的 jar 文件、hibernate-extensions 下的 hibernate-tools.jar 及 lib 目录下的 jar 文件、xdoclet-bin-1.2.3 下的 jar 文件全部拷贝到 middlegen- ...

    HibernateAPI中文版.chm

    7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many to many) 7.6. 更复杂的关联映射 8. 组件(Component)映射 8.1. 依赖对象(Dependent objects) ...

    Hibernate Reference Documentation3.1

    7.5.1. one to many / many to one 7.5.2. one to one 7.5.3. many to many 7.6. More complex association mappings 8. Component Mapping 8.1. Dependent objects 8.2. Collections of dependent objects 8.3. ...

Global site tag (gtag.js) - Google Analytics