Hibernate中代碼自動生成小結- -

 

                                      

from:http://www.cnblogs.com/sunsonbaby/archive/2005/01/11/90281.html

作者:bruce

整理人:smallduzi

版權聲明:本文嚴禁轉載,如有轉載請求,請和作者聯繫

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代碼中寫一些規定的tag,才能得到自動生成的hbm文件.

<hibernatedoclet
          destdir="src"
          excludedtags="@version,@author,@todo"
          force="true"
          verbose="true">
          <fileset dir="src">
              <include name="**/*.java"/>
              <exclude name="**/Product.java"/>
          </fileset>
          <hibernate version="2.0"/>
    </hibernatedoclet>

3. hbm2java

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

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

4. Schema Export

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

     conf = new Configuration()
          .addClass(a.class)
          .addClass(b.class);
     SchemaExport dbExport = new SchemaExport(conf);
     dbExport.setOutputFile("myschema.sql");
     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強大的靈活性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章