運行hbm2java工具和hbm2ddl工具,hbm2javahbm2ddl

來源:互聯網
上載者:User

運行hbm2java工具和hbm2ddl工具,hbm2javahbm2ddl

以下內容整理自《精通hibernate》 第二版


Hibernate提供了從對應檔到Java原始碼的轉換工具,名為hbm2java工具,可以利用ANT工具來運行它。

<span style="font-size:18px;"><target name="codegen" depends="prepare">    <taskdef name="hbm2javaTask"                    classname="org.hibernate.tool.ant.HibernateToolTask"                    classpathref="project.class.path" />    <hbm2javaTask destdir="${source.root}"        <configuration configurationfile="${class.root}/hibernate.cfg.xml" />        <hbm2java/>    </hbm2javaTask><target>   </span>

以上代碼定義了一個hbm2javaTask任務,它的destdir屬性指定Java源檔案存放在${source.root}目錄(即src子目錄)下,<configuration>子項目指定Hibernate的設定檔為classes/hibernate.cfg.xml。hibernate.cfg.xml檔案是XML格式的設定檔。hbm2javaTask任務重的<hbm2java>子任務就是Hibernate提供的hbm2java工具,它能根據hbm.xml對應檔產生java源檔案。

<hbm2java>任務還可以包含兩個屬性“jdk5”和“ejb3”,用法如下:

<hbm2java jdk5="true|false" ejb3="true|false">

<hnm2java>任務的jdk5屬性指定是否在產生的原始碼中包含JDK5的文法特性,ejb3屬性指定是否在產生的Java原始碼中包含ejb3的特徵,這兩個屬性的預設值都是false。


Hibernate提供了從對應檔到資料庫Schema的轉換工具,名為hbm2ddl工具,使用hbm2ddl工具時,必須在Hibernate的設定檔中設定hibernate.dialect屬性,顯示指定底層資料庫的SQL方言,因為hbm2ddl工具會根據資料庫的SQL方言來產生相應的資料庫Schema。

<span style="font-size:18px;"><target name="schema" depends="compile">    <taskdef name="hbm2javaTask"                    classname="org.hibernate.tool.ant.HibernateToolTask"                    classpathref="project.class.path" />    <hbm2javaTask destdir="${schema.dir}"        <configuration configurationfile="${class.root}/hibernate.cfg.xml" />        <hbm2ddl export="true" console="true" create="true"/>            drop="true" outputfilename="sampledb.sql" />    </hbm2javaTask><target> </span>

以上代碼定義了一個hbm2ddlTask任務,它的destdir屬性指定產生的DDL指令檔存放在${schema.dir}目錄(即schema子目錄)下,<configuration>子項目指定Hibernate的設定檔為classes/hibernate.cfg.xml。hbm2ddlTask任務重的<hbm2ddl>子任務就是Hibernate提供的hbm2ddl工具,它能根據hbm.xml對應檔產生相應的資料表。


<hbm2ddl>任務屬性

export如果為true,表示會在資料庫中執行所產生的DDL指令碼。預設為true 

drop如果為true,表示會產生刪除資料庫中表的DDL指令碼。預設為true

create如果為true,表示會產生建立資料庫中表的DDL指令碼。預設為true

outputfilename指定存放DDL指令碼的檔案

update如果為true,表示會對比現有資料庫及對應檔,產生用於累加式更新資料庫的DDL。值得注意的是,不能正式投入啟動並執行資料庫中採用這種累加式更新。因為它目前還不是非常健壯,不能保證產生準確的累加式更新DDL,也不能保證底層資料庫可以順利執行累加式更新DDL。預設值為false

haltonerror如果為true,表示遇到錯誤時會終止運行ANT工程。預設值為false

format設定DDL指令碼中SQL語句的格式

delimiter為DDL指令碼設定行結束符

console如果為true,表示會在控制台顯示產生DDL指令碼。預設值為true

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.