This Is A FineDay

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            93 隨筆 :: 0 文章 :: 69 評論 :: 0 Trackbacks

          用xdoclet 和xdoclet2來產生hiberante map文件的一些區(qū)別

          xdoclet升級到1.2.3了,文檔上說是支持hibernate 3了,實際上,經過今天的檢驗,發(fā)現xdoclet 1.2.3只是支持hibernate 3的map文件了,而生成的hibernate 3的config文件,卻還hibernate 2的。
          ?
          一個簡單的例子(就是這個例子:ttp://www.redsaga.com/hibernate-ref/3.1.2/zh-cn/html/tutorial.html#tutorial-firstapp-firstclass,按它上面的介紹,設置好各個目錄結構):
          package events;
          import java.util.Date;
          /**
          ?*
          ?* @hibernate.class table="EVENTS"
          ?*/
          public class Event {

          ??? private Long id;
          ??? private String title;
          ??? private Date date;
          ??? public Event() {
          ??? }
          ??? /**
          ???? * @hibernate.id
          ???? * generator-class="uuid.hex"
          ???? * type="java.lang.String"
          ???? * unsaved-value=""
          ???? * column="EVENT_ID"
          ???? */
          ??? public Long getId() {
          ??????? return id;
          ??? }
          ??? private void setId(Long id) {
          ??????? this.id = id;
          ??? }
          ??? /**
          ???? * @hibernate.property
          ???? * column="EVENT_DATE"
          ???? * type = "timestamp"
          ???? *
          ???? *
          ???? */
          ??? public Date getDate() {
          ??????? return date;
          ??? }
          ??? public void setDate(Date date) {
          ??????? this.date = date;
          ??? }
          ??? /**
          ???? * @hibernate.property
          ???? * column="EVENT_TITLE"
          ???? * length="20"
          ???? *
          ???? */
          ??? public String getTitle() {
          ??????? return title;
          ??? }
          ??? public void setTitle(String title) {
          ??????? this.title = title;
          ??? }
          }
          ?
          上面的POJO,已經加上了xdoclet的javadoc tag了,現在用下面的ant文件來產生map和config文件:
          ?
          <project name="xdoclet" default="hibernatedoclet">
          ??? <property name="sourcedir" value="${basedir}/src"/>
          ??? <property name="targetdir" value="${basedir}/bin"/>
          ??? <property name="librarydir" value="${basedir}/lib"/>
          ??? <path id="libraries">
          ??????? <fileset dir="${librarydir}">
          ??????????? <include name="*.jar"/>
          ??????? </fileset>
          ??? </path>
          ??? <target name="clean">
          ??????? <delete dir="${targetdir}"/>
          ??????? <mkdir dir="${targetdir}"/>
          ??? </target>
          ??? <target name="compile" depends="clean, copy-resources">
          ??????? <javac srcdir="${sourcedir}"
          ?????????????? destdir="${targetdir}"
          ?????????????? classpathref="libraries"/>
          ??? </target>
          ??? <target name="copy-resources">
          ??????? <copy todir="${targetdir}">
          ??????????? <fileset dir="${sourcedir}">
          ??????????????? <exclude name="**/*.java"/>
          ??????????? </fileset>
          ??????? </copy>
          ??? </target>
          ??? <taskdef name="hibernatedoclet" classname="xdoclet.modules.hibernate.HibernateDocletTask">
          ?????? <classpath>
          ???????????? <fileset dir="E:/workspace/xdoclet-1.2.3/lib" includes="*.jar"/>
          ??????? </classpath>
          ??? </taskdef>
          ??? <target name="hibernate" depends="compile" description="Generate mapping documents">
          ????????? <hibernatedoclet
          ??????????????? destdir="${targetdir}"
          ??????????????? excludedtags="@version,@author,@todo,@see"
          ??????????????? force="false"
          ??????????????? verbose="true">
          ??????????????? <fileset dir="${sourcedir}">
          ??????????????????? <include name="**/*.java"/>
          ??????????????? </fileset>
          ??????????????? <hibernatecfg
          ??????????????????????? dialect="net.sf.hibernate.dialect.xxxxx"
          ??????????????????????? driver="com.mysql.jdbc.Driver"
          ??????????????????????? jdbcUrl="jdbc:mysql://xxxxx"
          ??????????????????????? userName="xxxxx"
          ??????????????????????? password="xxxxx"/>
          ???????????????????????
          ???????????????? <hibernate version="3.0"/>
          ??????????? </hibernatedoclet>
          ??????? </target>
          </project>
          ?
          結果如下:
          Event.hbm.xml:
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE hibernate-mapping PUBLIC
          ??? "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          ??? "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
          <hibernate-mapping
          >
          ??? <class
          ??????? name="events.Event"
          ??????? table="EVENTS"
          ??? >
          ??????? <id
          ??????????? name="id"
          ??????????? column="EVENT_ID"
          ??????????? type="java.lang.String"
          ??????????? unsaved-value=""
          ??????? >
          ??????????? <generator class="uuid.hex">
          ????????????? <!--?
          ????????????????? To add non XDoclet generator parameters, create a file named
          ????????????????? hibernate-generator-params-Event.xml
          ????????????????? containing the additional parameters and place it in your merge dir.
          ????????????? -->
          ??????????? </generator>
          ??????? </id>
          ??????? <property
          ??????????? name="date"
          ??????????? type="timestamp"
          ??????????? update="true"
          ??????????? insert="true"
          ??????????? column="EVENT_DATE"
          ??????? />
          ??????? <property
          ??????????? name="title"
          ??????????? type="java.lang.String"
          ??????????? update="true"
          ??????????? insert="true"
          ??????????? column="EVENT_TITLE"
          ??????????? length="20"
          ??????? />
          ??????? <!--
          ??????????? To add non XDoclet property mappings, create a file named
          ??????????????? hibernate-properties-Event.xml
          ??????????? containing the additional properties and place it in your merge dir.
          ??????? -->
          ??? </class>
          </hibernate-mapping>
          hibernate.cfg.xml:
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
          <!-- Generated file - Do not edit! -->
          <hibernate-configuration>
          ?<!-- a SessionFactory instance listed as /jndi/name -->
          ?<session-factory>
          ??<!-- properties -->
          ??<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>
          ??<property name="show_sql">false</property>
          ??<property name="use_outer_join">false</property>
          ???<property name="connection.username">hibernate</property>
          ???<property name="connection.password">aPassword</property>
          ???<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
          ???<property name="connection.url">jdbc:mysql://xxx</property>
          ??<!-- mapping files -->
          ??<mapping resource="events/Event.hbm.xml"/>
          ?</session-factory>
          </hibernate-configuration>
          發(fā)現沒有,上面的config文件中的DTD版本還是2.0。
          ?

          對于hibernate3來說,現在多了個選擇,用xdoclet2也可以產生map文件,但是config文件好像沒有辦法。
          還是用上面POJO,對應的ant文件如下(注意,簡單起見,要把xdoclet2下面的lib目錄下的jar文件,全部copy到${basedir}/lib下):
          <project name="xdoclet2-plugin" default="hibernatedoclet">
          ??? <property name="sourcedir" value="${basedir}/src"/>
          ??? <property name="targetdir" value="${basedir}/bin"/>
          ???? <property name="librarydir" value="${basedir}/lib"/>
          ?
          ??? <path id="libraries">
          ??????? <fileset dir="${librarydir}">
          ??????????? <include name="*.jar"/>
          ??????? </fileset>
          ??? </path>
          ??? <target name="clean">
          ??????? <delete dir="${targetdir}"/>
          ??????? <mkdir dir="${targetdir}"/>
          ??? </target>
          ??? <target name="compile" depends="clean, copy-resources">
          ??????? <javac srcdir="${sourcedir}"
          ?????????????? destdir="${targetdir}"
          ?????????????? classpathref="libraries"/>
          ??? </target>
          ??? <target name="copy-resources">
          ??????? <copy todir="${targetdir}">
          ??????????? <fileset dir="${sourcedir}">
          ??????????????? <exclude name="**/*.java"/>
          ??????????? </fileset>
          ??????? </copy>
          ??? </target>
          ??? <target name="hibernatedoclet"
          ??????????? depends="compile"
          ??????????? description="Generate Persistence and form classes">
          ??????????? <taskdef
          ??????????????? name="xdoclet"
          ??????????????? classname="org.xdoclet.ant.XDocletTask"
          ??????????????? classpathref="libraries"
          ??????????????? />
          ??????????? <xdoclet>
          ??????????????? <!-- defines the file handled by xdoclet2 -->
          ??????????????? <fileset dir="${sourcedir}">
          ??????????????????? <include name="**/*.java"/>
          ??????????????? </fileset>
          ??????????????? <!-- defines the processing of a plugin -->
          ??????????????? <component
          ??????????????????? classname="org.xdoclet.plugin.hibernate.HibernateMappingPlugin"
          ??????????????????? destdir="${targetdir}"
          ??????????????????? version="3.0"
          ??????????????????? />
          ??????????? </xdoclet>
          ??????? </target>

          </project>
          ?
          結果如下:
          Event.hbm.xml:
          <?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="EVENTS" name="events.Event">
          ??? <id type="java.lang.String" column="EVENT_ID" unsaved-value="" access="method" name="id">
          ????? <generator class="uuid.hex"/>
          ??? </id>
          ??? <property name="date" type="timestamp" access="method" column="EVENT_DATE"/>
          ??? <property name="title" length="20" access="method" column="EVENT_TITLE"/>
          ? </class>
          </hibernate-mapping>
          發(fā)現用xdoclet1.2.3和xdoclet2產生的map文件還是有些區(qū)別的,包括形式和內容,也許那些區(qū)別都無所謂,但是畢竟有不同。從形式來看,明星xdoclet2產生的文件好看些,所以,以后,我看還是應該用xdoclet2來產生map文件。config文件,就手寫吧。
          ?

          ?
          應用?xdoclet1.2.3和xdoclet2,要注意的最大的一點是:POJO的javadoc tag中的所有@hibernate.collection-xxxxx都已經改變成@hibernate.xxxx了。所以,對已有的POJO應用xdoclet2時,可能要做個簡單的替換工作。
          posted on 2006-09-27 17:30 Peter Pan 閱讀(952) 評論(1)  編輯  收藏 所屬分類: SSH

          評論

          # re: xdoclet1.2.3&xdoclet2 2010-06-06 00:29 guest
          xdoclet1.2.3還是支持hibernate3的,你可以在hibernatecfg標簽里,加上一個屬性,version="3.0"  回復  更多評論
            

          主站蜘蛛池模板: 镇安县| 开江县| 柳林县| 大安市| 叶城县| 科技| 樟树市| 江川县| 博白县| 蒙山县| 明溪县| 延庆县| 湟中县| 西昌市| 襄城县| 克什克腾旗| 南安市| 桃园市| 汉寿县| 南皮县| 阆中市| 大城县| 长乐市| 青河县| 扎兰屯市| 陆河县| 玛多县| 天津市| 二连浩特市| 新野县| 南召县| 兴安县| 罗田县| 南充市| 五华县| 闸北区| 岢岚县| 南华县| 常宁市| 高淳县| 古浪县|