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/>什么什么的,也去掉。

你可能感兴趣的:(hbm2ddl,hbm2java,Middlegen)