☆藍(lán)色夢想☆

          世界總是反反覆覆錯(cuò)錯(cuò)落落地飄去 來不及嘆息 生活不是平平淡淡從從容容的東西 不能放棄
          posts - 57, comments - 5, trackbacks - 0, articles - 0
          java--->XDoclet(hibernatedoclet)--->Hbm---->SchemaExport(schemaexport,hbm2ddl)---->數(shù)據(jù)表

          ?1/**/?/*?
          ?2?*?Created?on?2006-4-7
          ?3??*/
          ?
          ?4?
          ?5?package??com.entity;
          ?6
          ?7?/**?*/?/**?
          ?8?*??@author??jkallen
          ?9?*?@hibernate.class?lazy="true"?table="syn_dept"
          10?*?@hibernate.cache?usage="read-write"
          11??*/
          ?
          12??public???class??SynDepartment???{
          13?
          14??/**?*/?/**??主鍵?id?*/?
          15??private??Long?id;
          16??/**?*/?/**??部門名稱?*/?
          17??private??String?code_name;
          18?
          19??/**?*/?/**?
          20??*??@return??Returns?the?id.
          21??*?@hibernate.id?generator-class="native"?column="id"
          22???*/
          ?
          23??????public??Long?getId()???{
          24???return??id;
          25?}
          ?
          26???public???void??setId(Long?id)???{
          27???this?.id??=??id;
          28?}
          ?
          29???/**?*/?/**?
          30????*??@return??Returns?the?code_name.
          31????*?@hibernate.property?column?=?"code_name"
          32?????*/
          ?
          33???public??String?getCode_name()???{
          34???return??code_name;
          35?}
          ?
          36???public???void??setCode_name(String?code_name)???{
          37???this?.code_name??=??code_name;
          38?}
          ?
          39}
          ?
          40
          這里用到了幾種@hibernate標(biāo)記的用法
          @hibernate.class標(biāo)記指定類的映射代碼,lazy="true" table="syn_dept"則如
          hibernate的映射文件class元素的屬性值具有相同的意義
          @hibernate.id標(biāo)記指定類的OID映射代碼
          @hibernate.property標(biāo)記指定類的屬性映射代碼
          另外還可能用到@hibernate.set(如一對(duì)多的情況下)

          2:XDoclet--->Hbm(寫在build.xml文件中,ANT運(yùn)行)

          <target?name="toHbm"?
          ??depends
          ="compileEntity"?
          ??description
          ="Generate?hibernate?mapping?documents">
          ??
          <hibernatedoclet?destdir="${generated.dir}">
          ???
          <fileset?dir="${src.dir}">
          ????
          <include?name="**/entity/*.java"?/>
          ???
          </fileset>
          ???
          <hibernate?version="2.0"?/>
          ??
          </hibernatedoclet>

          ??
          <copy?todir="${classes.dir}">
          ???
          <fileset?dir="${generated.dir}"?/>
          ??
          </copy>
          ?
          </target>


          通過hibernatedoclet就可以生成SynDepartment.hbm.xml映射文件
          fileset顧名思義就是過濾文件了。
          注:compileEntity--編譯java源文件(自定義)

          3:SchemaExport---->數(shù)據(jù)表

          <target?name="toddl"?depends="init">
          ??
          <schemaexport?properties="${classes.dir}/hibernate.properties"?
          ???quiet
          ="no"?text="no"?drop="no"????
          ???delimiter
          ="&#xd;&#xa;go&#xd;&#xa;"?output="${sql.dir}/${synup.sql.file}"
          ???
          >
          ???
          <fileset?refid="hibernate.synup.mapping.files"?/>
          ??
          </schemaexport>
          ??
          <echo?message="Output?sql?to?file:?${sql.dir}/${sql.file}"?/>
          ?
          </target>
          ?
          <fileset?id="hibernate.synup.mapping.files"?dir="${classes.dir}">
          ??
          <include?name="**/entity/*.hbm.xml"?/>
          ?
          </fileset>


          ?通過schemaexport就向DB中生成table了。其中可能用到如下的一些屬性:
          ?quiet:如果為yes,表示不把子DDL腳本輸出到控制臺(tái)
          ?drop:如果為yes,只執(zhí)行刪除數(shù)據(jù)庫中的操作,但不創(chuàng)建新的表
          ?text:如果為yes,只會(huì)生成DDL腳本文件,但不會(huì)在數(shù)據(jù)庫中執(zhí)行DDL腳本
          ?output:指定存放DDL腳本文件的目錄
          ?config:設(shè)定基于XML格式的配置文件, hbm2ddl(schemaexport)工具從這個(gè)文件中讀取數(shù)據(jù)庫的配置信息
          ?properties:設(shè)定基于java屬性文件格式的配置文件,hbm2ddl(schemaexport)工具從這個(gè)文件中讀取DB的配置信息
          ?format:設(shè)定DDL腳本中SQL語句的格式
          ?delimiter:為DDL腳本設(shè)置行結(jié)束符
          ?
          ?在ANT中執(zhí)行:
          ?<target name="initOnlySynup" depends="toHbm,toddl">
          ?</target>
          ?
          ?OK,最后生成的映射文件如下:

          <?xml?version="1.0"?>

          <!DOCTYPE?hibernate-mapping?PUBLIC
          ????"-//Hibernate/Hibernate?Mapping?DTD?2.0//EN"?
          ????"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"
          >

          <hibernate-mapping>
          ????
          <class
          ????????
          name="com.SynDepartment"
          ????????table
          ="syn_dept"
          ????????dynamic-update
          ="false"
          ????????dynamic-insert
          ="false"
          ????
          >
          ????????
          <cache?usage="read-write"?/>

          ????????
          <id
          ????????????
          name="id"
          ????????????column
          ="id"
          ????????????type
          ="java.lang.Long"
          ????????
          >
          ????????????
          <generator?class="native">
          ????????????
          </generator>
          ????????
          </id>

          ????????
          <property
          ????????????
          name="code_name"
          ????????????type
          ="java.lang.String"
          ????????????update
          ="true"
          ????????????insert
          ="true"
          ????????????access
          ="property"
          ????????????column
          ="code_name"
          ????????
          />

          ????????
          <!--
          ????????????To?add?non?XDoclet?property?mappings,?create?a?file?named
          ????????????????hibernate-properties-SynDepartment.xml
          ????????????containing?the?additional?properties?and?place?it?in?your?merge?dir.
          ????????
          -->

          ????
          </class>

          </hibernate-mapping>


          ?控制臺(tái)中部分信息如下:

          [schemaexport]?drop?table?syn_dept?cascade?constraints
          [schemaexport]?go
          [schemaexport]?drop?sequence?hibernate_sequence
          [schemaexport]?go
          [schemaexport]?create?table?syn_dept?(
          [schemaexport]?id?number(19,0)?not?null,
          [schemaexport]?code_name?varchar2(255),
          [schemaexport]?primary?key?(id)
          [schemaexport]?)

          DB中已經(jīng)生成syn_dept表了,快去看下吧!

          關(guān)于Xdoclet 中的hibernate標(biāo)簽更多信息可以參考:
          http://xdoclet.sourceforge.net/xdoclet/tags/hibernate-tags.html#@hibernate_collection-key__0__1_
          我還在一個(gè)網(wǎng)友的博客上看到了他對(duì)此的漢化:
          http://blog.csdn.net/fasttalk/archive/2005/09/19/484615.aspx


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 兴化市| 微山县| 安西县| 彰化县| 宜阳县| 东莞市| 德昌县| 平凉市| 尖扎县| 喀喇| 稻城县| 林芝县| 两当县| 龙门县| 石城县| 丹东市| 镇沅| 汝阳县| 灵台县| 南丰县| 奇台县| 林口县| 临夏县| 崇礼县| 南漳县| 小金县| 彰化市| 宣化县| 茌平县| 呼伦贝尔市| 炎陵县| 新龙县| 安塞县| 清涧县| 九龙坡区| 肥东县| 寻乌县| 双鸭山市| 白沙| 永胜县| 郧西县|