<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    This Is A FineDay

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

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

    xdoclet升級到1.2.3了,文檔上說是支持hibernate 3了,實際上,經過今天的檢驗,發現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>
    發現沒有,上面的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>
    發現用xdoclet1.2.3和xdoclet2產生的map文件還是有些區別的,包括形式和內容,也許那些區別都無所謂,但是畢竟有不同。從形式來看,明星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 閱讀(950) 評論(1)  編輯  收藏 所屬分類: SSH

    評論

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

    主站蜘蛛池模板: 成人毛片18岁女人毛片免费看| 午夜老司机永久免费看片| 成年私人影院免费视频网站| 亚洲视频一区二区三区| 免费无码中文字幕A级毛片| 亚洲s色大片在线观看| 91精品导航在线网址免费| 亚洲视频中文字幕| 最近2019中文字幕免费大全5| 67pao强力打造67194在线午夜亚洲| 久久精品视频免费看| 亚洲天堂一区二区三区四区| 18禁免费无码无遮挡不卡网站| 亚洲国产日产无码精品| 韩国18福利视频免费观看| 农村寡妇一级毛片免费看视频| 中文字幕日韩亚洲| 一区二区免费视频| 亚洲一区二区三区四区视频| 麻豆精品国产免费观看| 曰批免费视频播放免费| 亚洲AV无码乱码国产麻豆穿越| 免费福利视频导航| www亚洲精品久久久乳| 亚洲中文字幕无码中文字在线| 久久久久久夜精品精品免费啦| 亚洲一区二区三区精品视频| 免费人成在线观看视频播放| 中文字幕在线视频免费观看| 久久精品国产亚洲AV高清热| 在线视频免费观看高清| 成人国产网站v片免费观看| 亚洲av不卡一区二区三区| 女人让男人免费桶爽30分钟| 一级毛片免费在线观看网站| 亚洲网址在线观看你懂的| 日产乱码一卡二卡三免费| 精品视频在线免费观看| 中国china体内裑精亚洲日本| 国产亚洲色视频在线| 久久精品免费一区二区喷潮|