好學驛站

          JSP、JAVA、struts、hibernate、spring、eclipse、工作流、電子政務、協同辦公、J2ME

          Hibernate中代碼自動生成功能小結 (很早的版本)

          Hibernate中需要class和mapping file, 也就是java文件和hbm.xml文件,由于Hibernate只支持DML, 不支持DDL,所以在DB中需要有DDL或已經存在的數據庫的表。Hibernate中共有三種文件與代碼自動生成功能有關:
          class, mapping file and DDL

          1. Middlegen
          是用來從DB中已存在的表,生成相應的mapping file. 可以下載一個老外的middlegen的例子。
          http://sourceforge.net/project/showfiles.php?group_id=40712

          調用Middlegen很簡單,例子中的middlegen自動生成ant指令如下

          引用

          <middlegen
          appname="${name}"
          prefsdir="${src.dir}"
          gui="${gui}"
          databaseurl="${database.url}"
          initialContextFactory="${java.naming.factory.initial}"
          providerURL="${java.naming.provider.url}"
          datasourceJNDIName="${datasource.jndi.name}"
          driver="${database.driver}"
          username="${database.userid}"
          password="${database.password}"

          >
          <hibernate
          destination="${build.gen-src.dir}"
          package="${name}.hibernate"
          />
          </middlegen>

          然后會有一個GUI,給我們專門設計各種表與表之間的關系(一對一,一對多以及單向雙向關系)。需要說明的是,middlegen生成的代碼沒有直接寫mapping file靈活性好,所以生成的mapping file有時還需要我們去修改。

          2. XDoclet
          它是用來從java文件自動生成hbm文件的,不過我們需要在java代碼中寫一些規(guī)定的tag,才能得到自動生成的hbm文件.

          代碼
          1. < hibernatedoclet ??
          2. ?????????? destdir = "src" ??
          3. ?????????? excludedtags = "@version,@author,@todo" ??
          4. ?????????? force = "true" ??
          5. ?????????? verbose = "true" > ??
          6. ?????????? < fileset ? dir = "src" > ??
          7. ?????????????? < include ? name = "**/*.java" /> ??
          8. ?????????????? < exclude ? name = "**/Product.java" /> ??
          9. ?????????? </ fileset > ??
          10. ?????????? < hibernate ? version = "2.0" /> ??
          11. ???? </ hibernatedoclet > ??

          3. hbm2java
          它是用來從mapping 文件生成java代碼的工具,調用很簡單,在參數中需要給出所有的hbm文件,如下:

          代碼
          1. < java ? classname = "net.sf.hibernate.tool.hbm2java.CodeGenerator" ? fork = "true" > ??
          2. ?????? < classpath ? refid = "classpath" /> ??
          3. ?????? < arg ? line = "${build.gen-src.dir}/airline/hibernate/*.hbm.xml" /> ??
          4. ???? </ java > ??

          4. SchemaExport
          如果寫好了java文件和hbm文件,就可以用SchemaExport直接生成DDL文件,調用同樣簡單,只需在java代碼中,加入如下:

          代碼
          1. conf?=? new ?Configuration() ??
          2. ?????.addClass(a. class ) ??
          3. ?????.addClass(b. class ); ??
          4. SchemaExport?dbExport?=? new ?SchemaExport(conf); ??
          5. dbExport.setOutputFile( "myschema.sql" ); ??
          6. dbExport.create( true ,? true ); ??

          從這四種自動生成工具來看, mapping file, java file and DDL,只要知道任何一種文件,都可以得到另外兩種文件,
          如:

          1. 只有mapping file:
          mapping file---hbm2java----java---SchemaExport----DDL

          2.只有DDL
          DDL---Middlegen---hbm----hbm2java----java

          3.只有Java
          java---XDoclet---hbm----SchemaExport----DDL

          從這里,大家也可以體會到, Hibernate強大的靈活性。


          posted on 2007-06-13 11:22 好學蜘蛛 閱讀(202) 評論(0)  編輯  收藏 所屬分類: hibernatestruts

          主站蜘蛛池模板: 澄城县| 梓潼县| 宜良县| 英吉沙县| 台中市| 唐海县| 西昌市| 安塞县| 东兰县| 岑溪市| 丽水市| 厦门市| 银川市| 仁怀市| 广昌县| 民勤县| 石门县| 伊金霍洛旗| 阿拉善盟| 南宫市| 墨竹工卡县| 内黄县| 招远市| 南召县| 松滋市| 全南县| 邢台市| 墨玉县| 德格县| 忻城县| 漠河县| 洮南市| 沙雅县| 丹巴县| 瑞昌市| 开江县| 财经| 繁峙县| 延安市| 霍山县| 昌图县|