<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 閱讀(961) 評論(1)  編輯  收藏 所屬分類: SSH

    評論

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

    主站蜘蛛池模板: 日本一区二区三区在线视频观看免费 | 亚洲精品无码永久中文字幕| 猫咪免费人成在线网站| 波多野结衣久久高清免费| 精品国产日韩久久亚洲| 女人18毛片水真多免费播放 | 亚洲国产AV无码一区二区三区 | 国产免费拔擦拔擦8X高清在线人 | 无码视频免费一区二三区| 国产 亚洲 中文在线 字幕| 最近2019中文字幕免费看最新| 激情五月亚洲色图| 日韩高清在线免费观看| 国产精品亚洲AV三区| 又爽又高潮的BB视频免费看 | 国产成人麻豆亚洲综合无码精品| 一级中文字幕乱码免费| 国产亚洲AV无码AV男人的天堂| 黄色免费在线网站| 亚洲视频欧洲视频| 成人激情免费视频| 色吊丝性永久免费看码| 国产亚洲精品va在线| 2015日韩永久免费视频播放| 亚洲色精品三区二区一区| 亚洲а∨天堂久久精品| 黄网站色视频免费在线观看的a站最新| 久久久无码精品亚洲日韩蜜臀浪潮| 无码国产精品一区二区免费| 亚洲av第一网站久章草| 国产亚洲午夜高清国产拍精品| 99精品视频在线视频免费观看| 亚洲最大的成人网站| 亚洲精品网站在线观看不卡无广告| a级特黄毛片免费观看| 亚洲av永久综合在线观看尤物| 亚洲?V乱码久久精品蜜桃 | 美女视频黄的全免费视频| 理论片在线观看免费| 精品无码一区二区三区亚洲桃色| 成人免费视频88|