Hibernate3中的hbm2java和hbm2ddl的ant腳本實現

這算是很久之前遺留下的一個問題。在深入淺出Hibernate之前的例子裏,曾經有用middlegen生成java代碼,但是因爲書裏的例子是根據hibernate2來的,有些東西在hibernate3裏找不到或是修改過了,所以ant hbm2java的時候怎麼也不行,因爲沒有對應的Hbm2JavaTask這個類(好像是這個類名)。

於是就先放着了,現在在看最後面的項目時,發現也有這麼一步,於是又想起來了,不知道的東西自己瞎找也找不到(對API啥的也不熟),就上網搜了。

原文地址:http://jackdown.blog.sohu.com/22335920.html

最近在看那個很火的《精通Hibernate》,發現裏面都是針對hibernate2.1進行講解了,但我們用的是hibernate3.1,很多地方都不一樣,原來的那些hbm2ddl,hbm2java的腳本都不管用了,於是到處查資料,折騰了兩天,終於搞定了,希望後來人不要再走彎路。
1.Hibernate-tools.jar這個包已經不像以前那麼好找了,現在是放在hibernate-tools這個eclipse插件裏面,用的時候要從裏面搜索一下才能找到。
2.Hibernate-tools這個插件的用法,見官方網站的flash演示,使用非常方便。
Ant腳本已經跟2有很大差別了,這個我折騰了一天多,終於搞定了,貼出來大家看一下,更詳細的信息可以看 http://www.hibernate.org/hib_docs/tools/ant/

Hbm2ddl:

<target name="hbm2ddl">
      <taskdef name="hbm2ddl"
 classname="org.hibernate.tool.ant.HibernateToolTask"
 classpathref="project.class.path"/>
      <hbm2ddl destdir="${ schema.dir }">
       <configuration configurationfile="${ source.root }/hibernate.cfg.xml" />
       <hbm2ddl export="true" console="false" create="true" update="false" drop="false" outputfilename="bestunix.sql"/>
      </hbm2ddl> 
</target>

Hbm2java :

<target name="hbm2java">
      <taskdef name="hbm2java"
 classname="org.hibernate.tool.ant.HibernateToolTask"
 classpathref="project.class.path"/>
      <hbm2java destdir="${ source.root }">
       <configuration configurationfile="${ source.root }/hibernate.cfg.xml" /> 
       <hbm2java generics="true" ejb3="false"/>
   <cfg2hbm/>
 </hbm2java> 
</target>

同時完成兩個任務:

<target name="schemaexport">
      <taskdef name="hibernatetool"
 classname="org.hibernate.tool.ant.HibernateToolTask"
 classpathref="project.class.path"/>
      <hibernatetool destdir="${ source.root }">
       <configuration configurationfile="${ source.root }/hibernate.cfg.xml" />
       <hbm2ddl export="true" console="false" create="true" update="false" drop="false" outputfilename="bestunix.sql"/>
       <hbm2java generics="true" ejb3="false"/>
       <cfg2hbm/>
      </hibernatetool> 
</target>

3. 用來生成html格式的數據庫文檔<hbm2doc>在ant腳本中好像暫時不行,還是要藉助Hibernate-tool這個Eclipse插件來完成


4. 還有一些不明白的地方以後弄明白了再記



另外:

1.我只執行上面的hbm2java,運行的時候有報錯說hbm.xml找不到。但是我明明在cfg文件裏有些,路徑是相對於根的全路徑,但就是找不到,於是看了下控制檯,大概就是說是不是確定在classpath裏有這個文件。於是在path里加了<pathelement path="../src"/>才找到。

2.運行時的第二個問題是找不到freemarker/template/TemplateException這個類,在middlegen的lib包里加上freemarker的包。

3.報錯大概說hbm2java沒有generics這個屬性,兩個都去掉;hbm2java沒有<cfg2hbm/>什麼什麼的,去掉;hibernatetool沒有<cfg2hbm/>什麼什麼的,也去掉。

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