好学驿站

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代码中写一些规定的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 好学蜘蛛 阅读(187) 评论(0)  编辑  收藏 所属分类: hibernatestruts


只有注册用户登录后才能发表评论。


网站导航: