`
peigang
  • 浏览: 170698 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Middlegen简化Hibernate开发

    博客分类:
  • JAVA
阅读更多
使用Hibernate的一个不便之处就是要维护数据库schema,hbm文件和java文件的一致性,而Middlegen可以帮助你完成这些。
  Middlegen是一个基于Xdoclet的代码,配置文件自动生成工具。它支持目前流行的大部分的技术,例如EJB,JDO,Hibernate,Torque,JSP/Struts等。
  Middlegen主要根据你已有的数据库Schema根据你的要求来自动的生成你所需要的文件,这大大的降低了开发难度,提高了开发速度。使用Middlegen的另一个显而易见的好处是你所有的代码可以在一分钟之内和数据库同步。
  使用Middlegen自动的生成Hbm文件和Java文件包括两步,第一,根据数据库Schema生成Hbm文件。第二,根据hbm文件生成与之对应得Java文件,这些文件主要是与数据库表对应得持久化类。Middlegen的主要功能都必须在ant环境下使用,下述build文件片断说明了如何定义自定义的任务(task)
  
  <taskdef></taskdef>  name="middlegen"
  classname="middlegen.MiddlegenTask"
  classpathref="classpath.path"/>
     name="hbm2java"
   classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask"
   classpathref="classpath.path"/>
  其中第一个taskdef定义了用于根据数据库schema生成hbm文件的自定义任务(middlegen)。第二个taskdef定义了用于使用hbm文件自动生成持久化Java文件的自定义任务(hbm2java)。其中要说明的是classpath.path指定的路径下必须包含middlegen携带的jar文件和hibernate携带的jar文件。
  
  使用自定义任务来生成hbm文件:
  <target name="mid-gen" depends="mid-init"></target>
  <taskdef></taskdef>  name="middlegen"
  classname="middlegen.MiddlegenTask"
  classpathref="classpath.path"/>
   <middlegen appname="mda"></middlegen>   prefsdir="${conf.dir}"
   gui="false"
   databaseurl="${config.database.url}"
   driver="oracle.jdbc.driver.OracleDriver"
   username="${config.database.user}"
   password="${config.database.password}"
   schema="${config.database.user}"
   includeViews="false">
  
  <hibernate destination="${build.src-gen.dir}"></hibernate>   package="entity"
   genXDocletTags="true" javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"/>
  
  
  上述build片断中middlegen部分主要说明了在使用middlegen过程中的一些配置,关于数据库部分不用多说,主要说明gui和prefsdir部分。Middlegen自带了一个GUI界面用来即时的变更数据库字段和生成文件之间的映射关系,如果将gui属性设置为true,那么在代码生成之前会跳出一个界面让你来配置数据库字段和生成文件之间的对应关系,但是对于每日构建来说这不太合适,应为这个过程序要人为的干涉,哪怕只是点击确认按钮。同时middlegen提供了一个prefsdir选项,middlegen会自动地在该选项指定的目录下寻找文件appname-prefs.properties,根据该文件中定义的对应关系来生成文件。其中appname就是上述定义的appname,本例中为mda-prefs.propertyes。
  hibernate部分主要说明生成hbm文件的一些属性,例如destination说明了生成文件的位置。Package说明了生成hbm文件对应的java文件的所在包。GenXDocletTags说明了是否在hbm文件内部保留元数据标记。
  
  如下是一个mda-prefs.propertyes文件的一部分:
  hibernate.tables.GENINKBNINFO.base-class-name=GeninKbnInfoEntity
  hibernate.tables.GENINKBNINFO.columns.GENINKBN.java-name=geninKbn
  hibernate.tables.GENINKBNINFO.columns.GENINKBN.java-type=java.lang.String
  hibernate.tables.GENINKBNINFO.columns.GENINKBNCD.java-name=geninKbnCD
  hibernate.tables.GENINKBNINFO.columns.GENINKBNCD.java-type=java.lang.Integer
  …
  以上说明对于数据库中的表GENINKBNINFO对应的Java类为GeninKbnInfoEntity,该表有两个字段:GENINKBN和GENINKBNCD,其中字段GENINKBN对应的java字段的属性名为geninKbn,类型为String。字段GENINKBNCD对应得java字段属性名为geninKbnCD,类型为Integer,生成的hbm文件为:
  
  
     "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
  
  <hibernate-mapping></hibernate-mapping>
  
  
  <class></class>   name="entity.GeninKbnInfoEntity"
   table="GENINKBNINFO"
  >
   <meta attribute="class-description" inherit="false">
   @hibernate.class
   table="GENINKBNINFO"
  
  
      name="geninKbnCD"
   type="java.lang.Integer"
   column="GENINKBNCD"
   >
   <meta attribute="field-description">
   @hibernate.id
   generator-class="assigned"
   type="java.lang.Integer"
   column="GENINKBNCD"
  
  
   <generator class="assigned"></generator>
  
  
      name="geninKbn"
   type="java.lang.String"
   column="GENINKBN"
   not-null="true"
   length="40"
   >
   <meta attribute="field-description">
   @hibernate.property
   column="GENINKBN"
   length="40"
   not-null="true"
  
  
  
  
  
  
  
  
  然后使用如下build片断来根据hbm文件自动生成java文件。
  <target name="hbm2java"></target>   description="Generate .java from .hbm files." depends="mid-gen">
  
      name="hbm2java"
   classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask"
   classpathref="classpath.path"/>
  
   <hbm2java output="${build.src-gen.dir}" classpathref="classpath.path"></hbm2java>
   <fileset></fileset>
   <include name="**/*.hbm.xml"></include>
  
  
  
  hbm2java是hibernate自带的一个工具你必须从hibernate网站上下载一个叫做hibernate-tools.jar的工具,并且将它加载到classpath下面,如下是该工具生成的Java代码:
  package entity;
  
  import java.io.Serializable;
  import org.apache.commons.lang.builder.EqualsBuilder;
  import org.apache.commons.lang.builder.HashCodeBuilder;
  import org.apache.commons.lang.builder.ToStringBuilder;
  
  /**
   * @hibernate.class
   * table="GENINKBNINFO"
   *
  */
  public class GeninKbnInfoEntity implements Serializable {
  
   /** identifier field */
   private Integer geninKbnCD;
  
   /** persistent field */
   private String geninKbn;
  
   /** full constructor */
   public GeninKbnInfoEntity(Integer geninKbnCD, String geninKbn) {
   this.geninKbnCD = geninKbnCD;
   this.geninKbn = geninKbn;
   }
  
   /** default constructor */
   public GeninKbnInfoEntity() {
   }
  
   /**
   * @hibernate.id
   * generator-class="assigned"
   * type="java.lang.Integer"
   * column="GENINKBNCD"
   *
   */
   public Integer getGeninKbnCD() {
   return this.geninKbnCD;
   }
  
   public void setGeninKbnCD(Integer geninKbnCD) {
   this.geninKbnCD = geninKbnCD;
   }
  
   /**
   * @hibernate.property
   * column="GENINKBN"
   * length="40"
   * not-null="true"
   *
   */
   public String getGeninKbn() {
   return this.geninKbn;
   }
  
   public void setGeninKbn(String geninKbn) {
   this.geninKbn = geninKbn;
   }
  
   public String toString() {
   return new ToStringBuilder(this)
   .append("geninKbnCD", getGeninKbnCD())
   .toString();
   }
  
   public boolean equals(Object other) {
   if ( !(other instanceof GeninKbnInfoEntity) ) return false;
   GeninKbnInfoEntity castOther = (GeninKbnInfoEntity) other;
   return new EqualsBuilder()
   .append(this.getGeninKbnCD(), castOther.getGeninKbnCD())
   .isEquals();
   }
  
   public int hashCode() {
   return new HashCodeBuilder()
   .append(getGeninKbnCD())
   .toHashCode();
   }
  
  }
  生成的java文件中带有Xdoclet标签,完全可以在从Java文件生成Hbm文件,这里不讲具体的过程,可以参看后续的Xdoclet部
分享到:
评论

相关推荐

    Middlegen-Hibernate-r5

    而Middlegen则是与Hibernate配套使用的工具,它能自动生成Hibernate的持久层代码,大大提升了开发效率。本文将深入探讨Middlegen-Hibernate-r5这一版本,揭示它们如何协同工作,为开发者带来便利。 一、Middlegen...

    Middlegen-Hibernate-r5,hibernate-extensions-2.1.3

    【标题】"Middlegen-Hibernate-r5,hibernate-extensions-2.1.3" 涉及的是两个重要的Hibernate相关工具:Middlegen和Hibernate Extensions,这两个工具都是在开发基于Java的数据库应用程序时使用的辅助工具。...

    Middlegen-Hibernate.rar

    Middlegen-Hibernate的结合使用,使得开发者可以从繁琐的手动创建映射文件中解脱出来,专注于业务逻辑的实现,提高了开发效率。然而,值得注意的是,随着技术的发展,现代的ORM框架如Hibernate本身已经提供了逆向...

    hibernate-extensions-2.1.3.zip ,middlegen for hibernate

    结合使用Hibernate扩展和Middlegen,开发人员可以更高效地进行数据库驱动的Java应用程序开发。它们降低了代码维护的复杂性,提升了开发速度,使得开发者能够将更多的精力集中在业务需求和创新上,而非基础架构的构建...

    hibernate-extensions和Middlegen-Hibernate

    总结来说,hibernate-extensions和Middlegen-Hibernate是提高Hibernate开发效率的利器,它们通过自动化的方式,帮助开发者快速生成数据库映射文件和Java实体类,使得开发工作更加高效和便捷。合理利用这两个工具,...

    Hibernate-Extension Middlegen-Hibernate

    然而,值得注意的是,尽管Middlegen简化了开发流程,但其自动生成的代码可能并不完全符合项目的特定需求,因此在实际使用中,往往需要对生成的代码进行适当的调整和优化。 总结来说,Hibernate扩展Middlegen-...

    Middlegen-Hibernate-r5.rar

    在Middlegen-Hibernate-r5.rar中,我们可以找到该版本的Middlegen,它支持最新的数据库模式和Hibernate特性,简化了开发人员从数据库到Java对象的转换过程,大大提高了开发效率。 接下来,我们转向Hibernate,一个...

    Middlegen-Hibernate-r5.zip

    Hibernate的Middlegen-Hibernate-r5工具包可以生成映射文件及POJO文件,简化开发。... 关于Hibernate的关系映射,其中除了注解方式,还可以通过XML方式,此文件是根据数据库生成XML文件的一种工具。...

    Middlegen-Hibernate配置

    在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,对于初学者或者开发者来说,正确配置和使用Hibernate可能会遇到一些挑战。Middlegen是针对Hibernate的一个自动化...

    Middlegen和Hibernate extensions

    Middlegen和Hibernate Extensions是两个与Hibernate相关的工具,它们进一步扩展了Hibernate的功能,提升了开发效率。 **Middlegen** 是一个自动化建模工具,它可以从现有的数据库中生成Hibernate的映射文件(.hbm....

    hibernate,hibernate3,Middlegen-Hibernate-r5

    综上所述,Hibernate、Hibernate3、Hibernate-Annotations和Middlegen-Hibernate-r5构成了一个强大的Java ORM解决方案,它们共同解决了Java应用中的数据库持久化问题,大大简化了开发流程,提高了开发效率。...

    spring+Middlegen+hibernate-extensions.rar

    综上所述,这个压缩包中的资源旨在帮助开发者搭建一个基于Spring的、使用Hibernate作为ORM工具的开发环境,并通过Middlegen进行数据库建模,进一步利用Hibernate的扩展功能提升开发效率和应用程序性能。这样的组合在...

    利用Middlegen Hibernate3生成hbm.xml配置和java类

    总之,Middlegen是Hibernate3开发中的一个强大辅助工具,它可以简化数据库到Java代码的映射过程,提高开发效率。理解如何使用Middlegen对于任何使用Hibernate进行数据库操作的Java开发者来说都是十分重要的。

    hibernate相关插件全集

    总结来说,这些压缩包中的资源对于使用Eclipse进行Hibernate开发的人员来说是非常宝贵的。Middlegen简化了数据库到Java模型的转换,Hibernate的注解支持让代码更易读,而Hibernate Extensions则提供了丰富的额外功能...

    middlegen

    "Middlegen"是一款基于Java的开源工具,专为简化Hibernate对象关系映射(ORM)框架的使用而设计。它作为一个集成开发环境(IDE)插件,帮助开发者自动生成Hibernate配置文件、Java实体类以及数据库脚本,从而极大地...

    Hibernate关系映射XML生成工具

    关系映射XML生成工具,如"Middlegen-Hibernate-r5",则是为了简化这一过程而设计的。这些工具能够自动生成Hibernate所需的配置文件,包括映射文件(.hbm.xml),这些文件定义了Java类和数据库表之间的映射关系。 ...

    Middlegen映射Table到实体类 配置 Jar包

    Middlegen是一款强大的工具,它能够自动将数据库的表结构映射为Java实体类,并生成相应的Hibernate配置文件,极大地简化了开发过程中的数据访问层构建。在这个“Middlegen映射Table到实体类 配置 Jar包”中,我们将...

    Hibernate开发指南

    本文档《Hibernate开发指南》作为一本手册,为开发者提供了一个全面的入门和进阶Hibernate使用的途径。 首先,准备工作阶段需要下载并安装Ant软件包,将它的bin目录添加到系统PATH中,以便于后续的操作。此外,还...

Global site tag (gtag.js) - Google Analytics