利用xdoclet生成ddl

用了這麼久的hibernate,一直都是從ddl->hbm->java,最後做少量的修改.但是總是覺得並沒有以oo的思想去構建object.在這個項目中就體驗從java->hbm->ddl的構建過程.

開發環境
eclipse 3.0.1+ant1.6+xdoclet1.2.2+mysql4.1.8

整個項目中的生成工具是xdoclet.那麼首先就是xdoclet的配置和使用方法了.

1.將各個框架和工具所需要的jar文件拷貝至項目的lib目錄下.
2.編寫ddl-build.xml,內容如下:
<?xml version="1.0" encoding="UTF-8" ?>

<project default="exportdb" basedir=".">
	
	<property name="appname" value="Helloworld" />
	<property name="base" value="." />
	<property name="src.dir" value="src"/>
	<property name="build.dir" value="bin"/>
	<property name="db.dir" value="datebase" />
	<property name="lib.dir" value="lib" />
	<property name="xdoclet.lib" value="${lib.dir}/xdoclet" />
	<property name="mysql.schema" value="${base}/${db.dir}/db.sql" />

	<path id="myclasspath">
		<fileset dir="${lib.dir}">
			<include name="*.jar" />
		</fileset>
		<pathelement location="${build.dir}" />
	</path>

	<target name="genhbmfile" description="Generates Hibernate Mapping File">

		<echo>+---------------------------------------------------+</echo>
		<echo>|          Generates Hibernate Mapping File         |</echo>
		<echo>+---------------------------------------------------+</echo>

		<taskdef name="hibernatedoclet"
			classname="xdoclet.modules.hibernate.HibernateDocletTask">
			<classpath refid="myclasspath" />
		</taskdef>

		<hibernatedoclet destdir="${src.dir}" excludedtags="@version,@author,@todo" force="true" verbose="true">
			<fileset dir="${src.dir}">
				<include name="**/*.java" />
			</fileset>
			<hibernate version="2.0" />
		</hibernatedoclet>
	</target>

	<target name="compile">

		<echo>+---------------------------------------------------+</echo>
		<echo>|                 Compile java class                |</echo>
		<echo>+---------------------------------------------------+</echo>

		<mkdir dir="${build.dir}" />
		<javac classpathref="myclasspath" srcdir="${src.dir}" destdir="${build.dir}">
			<include name="**/*.java" />
		</javac>
		<copy todir="${build.dir}">
			<fileset dir="${src.dir}">
				<exclude name="**/*.java" />
			</fileset>
		</copy>
	</target>

	<target name="exportdb" depends="genhbmfile,compile">

		<echo>+---------------------------------------------------+</echo>
		<echo>|               Create database table               |</echo>
		<echo>+---------------------------------------------------+</echo>

		<java classname="net.sf.hibernate.tool.hbm2ddl.SchemaExport" fork="true">
			<classpath refid="myclasspath" />
			<arg value="--text" />
			<arg value="--${mysql.schema}" />			
			<!-- insert "hibernate.dialect net.sf.hibernate.dialect.MySQLDialect" to .properties file" -->
			<arg value="--properties=${src.dir}/hibernate.properties" />
			<arg value="--delimiter=;" />			
			<arg value="${src.dir}/cn/bluewind/security/model/*.xml" />			
		</java>
	</target>

</project>

因爲項目是在eclipse中開發,所以用xdoclet生成ddl只是對它在開發過程中的一個補充.其他的target沒有編寫.

最後將生成的sql文件導入mysql中.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章