<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"  回復  更多評論
      

    主站蜘蛛池模板: 国内精品久久久久影院免费| 成年性午夜免费视频网站不卡| 91精品成人免费国产| 最近2018中文字幕免费视频| 国产精品美女自在线观看免费 | 99视频在线观看免费| 亚洲综合区小说区激情区| 亚洲国产日韩女人aaaaaa毛片在线| 色婷婷精品免费视频| 91成人免费观看网站| 亚洲熟妇丰满多毛XXXX| 狠狠入ady亚洲精品| 亚欧在线精品免费观看一区| 亚洲中文字幕无码久久精品1 | 2020天堂在线亚洲精品专区| 国产午夜无码精品免费看| 亚洲av无码不卡一区二区三区| 老司机亚洲精品影院在线观看| 免费毛片在线播放| 亚洲免费在线观看视频| 毛片免费全部播放一级| 免费亚洲视频在线观看| 宅男666在线永久免费观看| 亚洲六月丁香六月婷婷蜜芽| 两个人的视频高清在线观看免费| 中文字幕在线观看亚洲| 小日子的在线观看免费| 久久夜色精品国产亚洲| 三年片在线观看免费西瓜视频| 亚洲日韩在线中文字幕第一页| 中文字幕免费人成乱码中国| 久久亚洲精品无码观看不卡| 一级女性全黄久久生活片免费 | 亚洲中文字幕无码不卡电影| 久久久久国产精品免费网站| 亚洲成a人片在线看| 亚洲免费在线观看| 色爽黄1000部免费软件下载| 亚洲狠狠综合久久| 99热精品在线免费观看| 7777久久亚洲中文字幕蜜桃|