使用MiddleGen-Hibernate工具自动生成Hibernate的映射xml文件

使用Hibernate的基本思路

  • 建立数据库模型,生成数据库
  • 根据数据库来生成Hibernate的映射xml文件
  • 根据映射xml文件生成Java的对象模型
  • 使用Hibernate进行数据库的增删改查

这里就只说怎么用MiddleGen-Hibernate工具来自动生成映射的xml文件。

 

怎么根据数据来生成Hibernate的映射xml文件

 

2.1 载Middlegen-Hibernate工具

            这个可以在网上找,我本来打算找一个官方的网址贴出来,但是网上搜索出来的官方网址我试过的都不可用,所以这里就不给出了,可以自己Google一下,关键字就是Middlegen-Hibernate。

 

2.2 Middlegen-Hibernate工具的配置

            我下载的是一个zip包解压出来就是一个文件夹,文件夹里面有很多文件,其中的config/database文件夹里面全部是一些数据库的配置文件,支持的数据库的类型很多,这里我们以mysql为例。

            打开config/database文件夹下的mysql.xml文件,其中:

            ·property name="database.driver.file"     这里的value用来指定你的mysql驱动包地址

            ·property name="database.url"     这里的value用来指定database的连接字符串,示例格式:value="jdbc:mysql://localhost/Sample",其中的localhost是ip,然后Sample是数据库名

            ·property name="database.userid"                       指定数据库登录名

            ·property name="database.password"     指定数据库登陆密码

 

            至于其他的我都是采用默认的,具体的用途要用的时候查一下就OK了,这个因为只需要配置这么多就可以使用了,而我这篇文章的主要目的就是告诉怎么样能让Hibernate非常简单的work起来,而不是说很深的原理,至于原理以后再深究,呵呵……

      然后就是配置根目录下的build.xml文件:

  • 第24行如果你没看到!ENTITY database SYSTEM这个标签那么你就可以搜索!ENTITY关键字然后你会找到这个标签,这里是配置目标数据库文件地址的,也就是我们刚才配置的mysql.xml文件的地址,一般默认的是hsqldb.xml,我们将其修改成mysql.xml就行,这里的地址都用的是相对地址所以你看到的是"file:./config/database/mysql.xml"
  • 第52行也就是property name="build.classes.dir"标签,他是指定输出目录的,可以修改成你想要的地址。
  • 第185行也就是package="${name}.hibernate",这里是指定包名,hibernate 节点package 属性的默认设置实际上是由前面的Application Name (${name})和“.hibernate”组合而成包名你可以指定成你的calss将要放置的包的名。这里还有一个属性genXDocletTags,如果设置为true,则生成的代码将包含 xdoclet tag。
  • 第33行property name="name",这里是指定应用名。

 

其他的基本都可以按默认的,上面只设置这么些基本就可以了,至于其他的一些配置这里不做深究,因为这个是就ant运行的,所以有兴趣的可以去研究研究ant的配置文件及其里面的各个标签的含义。

 

2.3 Middlegen-Hibernate工具的运行

      进行了上面的一些配置,这里我们可以运行Middlegen-Hibernate工具了,那这个怎么运行呢,上面也说到了这个是基于ant的,所以当然需要使用ant工具来运行。

      这里给几个ant运行的基本语法:

            ·ant –v         查看ant版本信息

            ·ant –f build.xml     运行某个build.xml的默认task

            ·ant –f build.xml task1 运行build.xml中指定的task1

            看了上面的ant的几个命令相信你应该指定怎么运行了吧。运行起来是这个样子的:

 

 

这里我的数据库名是Sample,里面就只有一个表t_user,其中只有两个字段id和name。选中表元素我们就可以调整各个数据库表的属性了。

            ·Domain class name             对应的POJO的类名

            ·Key generator     主键产生器的类型,(我们这里选identity,至于这些具体都是什么意思我也没有深究,不过感兴趣的可以研究下,有时间了我也去研究下)如果需要采取自定义的主键产生算法,则在此配置主键生成器,主键生成器必须实现net.sf.hibernate.id.IdentifierGenerator接口。

            ·Schema Name          数据库schema name.

      ·Persister       自定义持久类实现类类名,如果系统中还需要Hibernate之外的持久层实现机制,如通过存储过程得到目标数据集,甚至从LDAP中获取数据来填充我们的POJO。

            ·Enable Proxies        是否使用代理(用于延迟加载[Lazy Loading])

            ·Dynamic Update     如果选定,则生成Update SQL时不包含未发生变动的地段属性,这样可以在一定程度上提升SQL的效率。

            ·Mutable    类实例是否可变,默认未选定状态(可变),如果不希望应用程序对此类对应的数据记录进行修改(如对于数据库视图),则可取消其选定状态,之后对此类的Delete和Update操作都将实效。

            ·Implement the LifeCycle interface                        是否实现LifeCycle接口。LifeCycle接口提供了数据固化过程中的控制能力,通过实现LifeCycle接口,我们可以在数据库操作中加入(Callback)机制,如在数据库操作之前或者之后触发指定操作。

      ·Implement the Validatable interface        是否实现validatable接口,通过实现validatable接口,我们可以在数据被固化到数据库表之前对其合法性进行验证。值得注意的是,通过实现lifecycle接口,我们同样可以在数据操作之前验证数据的合法性,不同的是,validatable接口中定义的validate方法可能会被调多次,因此设计中应避免在Validatable接口的validate方法实现中加入业务逻辑的验证。

 

      以上是针对Class的设置,在Middlegen中我们同样可以对字段属性进行设置。在Middlegen中选定某个字段,界面下方就会显示字段映射属性的设置栏。如图:

 

其中:

·Hibernate mapping specialty

            映射类型:

            key:主键

            Property:属性

            Version:用于实现乐观锁(optimistic locking)

·Java property name                        字段对应的java属性名

·Java type      字段对应的java数据类型

·Column updateable                        生成Update SQL时是否包含本字段

·Column insertable              生成Insert SQL时是否包含本字段

 

            然后单击窗口顶部的Generate按钮,MiddleGen就会生成这些数据表对应的Hibernate映射文件。然后在上面你配置的生成路径下就可以看到对应的Tuser.hbm.xml映射文件,在这个文件中定义了Tuser类和t_user表的映射关系。

posted @ 2011-11-04 23:27  MacroCheng  阅读(8225)  评论(0编辑  收藏  举报