浏览 29086 次
锁定老帖子 主题:Hibernate中代码自动生成功能小结
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2003-09-15
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. SchemaExport 如果写好了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强大的灵活性。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2003-09-16
推荐的做法是先写hbm,然后两头开花,用工具生成ddl和java。
但生成的ddl还是要修改的 |
|
返回顶楼 | |
发表时间:2003-10-24
个人习惯:
当对象多,字段多时,还是先建表.再生产HBM,再PO |
|
返回顶楼 | |
发表时间:2007-01-29
虽然先写POJO,再写出hbm,然后通过hbm生成相应的DDL显得比较OO,但生成的DDL要改的非常多,实在是~~~个人还是比较喜欢从表来生成相应的hbm,工具也比较多。
|
|
返回顶楼 | |
发表时间:2007-01-29
先生成表再XML吧。这样可靠性高一点点吧
|
|
返回顶楼 | |
发表时间:2007-01-30
用xdoclet,ant java - hbm - 表
|
|
返回顶楼 | |
发表时间:2007-03-29
从hibernate的角度出发,肯定是hbm最优先,所有配置信息都在hbm里面,有了hbm再上下生成java和ddl也比较方便(默认就有工具支持)。
不过问题的关键是,一般的OO/UML设计工具(如Together Rose 等)都是针对java进行的可视化的设计,生成的也是java代码。 好像没有工具支持可视化地设计HBM阿!(包括HBM间的关系图类图,正向反向工程支持等,类似Together/Rose对JAVA的支持)。 |
|
返回顶楼 | |
发表时间:2007-03-29
2003年的帖子都被刨出来了啊,现在用annotation
|
|
返回顶楼 | |
发表时间:2007-04-03
:) 谢谢andyandyandy提醒,看来这两年年纪长了,知识却有些落伍了。
感觉annotation应该会比写xml省不少。 |
|
返回顶楼 | |
发表时间:2007-04-29
这么老的帖子都能给挖出来...
也提点建议。用hibernate的这三年来,楼主说的所有工具我都没用过。 因为我感觉现在好多人做系统,一般都是先建模,后写代码。 我习惯于先数据库建模,用erwin或powerdesigner。然后解析erwin xml file和powerdesigner file生成所有你需要的东西。建模工具都能够包含关联信息,所有one to many等常用信息都可以直接生成了。 感觉这样比较方便,而且建模工具也区分大小写,生成的代码也算好看。 这个方法也是跟前辈学的,不过在论坛上一直没见到人提过,所以在这里建议一下。 另外这个方法还有个优点,写过生成hibernate的功能后,你可以很轻松的写生成ibatis,或者你自己的框架用到的所有东西。例如dao、crud、service、etc。 |
|
返回顶楼 | |