`

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文件.

Java代码 复制代码
  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>  
<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代码 复制代码
  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>  
<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代码中,加入如下:

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(truetrue);;  
     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强大的灵活性。

分享到:
评论

相关推荐

    hibernate 学习笔记小结

    ### Hibernate学习笔记小结 #### 一、简介与配置 **Hibernate** 是一款开源的对象关系映射(ORM)框架,它允许开发人员将Java对象自动持久化到数据库表中,从而简化了数据访问层的开发工作。在Spring框架中,...

    Hibernate的框架的总结

    本文详细介绍了Hibernate框架中的核心配置文件`hibernate.cfg.xml`及其配置项、映射文件`xxx.hbm.xml`,以及核心API如Configuration和SessionFactory的使用方法,并对C3P0连接池进行了简要说明。通过这些内容的学习...

    Struts2+Hibernate+Spring项目小结――Hibernate部分

    - `@SequenceGenerator`:定义序列生成器,用于自动生成主键值。 此外,还需要引入相关的包,例如`javax.persistence`和`org.hibernate.annotations`,以便使用这些注解。 通过这种方式,开发人员可以在不编写XML...

    Hibernate实战(第2版 中文高清版)

     2.3.3 生成Java源代码   2.4 与Java EE服务整合   2.4.1 与JTA整合   2.4.2 JNDI绑定的SessionFactory   2.4.3 JMX服务部署   2.5 小结   第3章 领域模型和元数据   3.1 CaveatEmptor应用程序   ...

    hibernate的知识总结

    ### 小结 以上总结的知识点涵盖了Hibernate中与数据库的数据类型映射,关系配置的XML和注解方法,以及一些基础的FAQ解答。由于Hibernate框架的广泛性,其功能和配置内容远远不止这些。要全面掌握Hibernate,还需要...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    本章主要介绍关系数据库中的代理主键(不具有业务含义),接着介绍Hibernate提供的几种内置标识符生成器的用法及适用范围。 6.1 关系数据库按主键区分不同的记录 123 6.1.1 把主键定义为自动增长标识符类型 123 ...

    hibernate注解学习笔记

    #### 四、小结 本篇笔记总结了Hibernate中常用的注解配置方式,包括实体类的基本配置、属性映射配置、复合类型配置以及主键生成策略等。通过这些注解,我们可以方便地将Java对象映射到关系型数据库中,简化了持久化...

    精通Hibernate:对象持久化技术第二版part3

    本章主要介绍关系数据库中的代理主键(不具有业务含义),接着介绍Hibernate提供的几种内置标识符生成器的用法及适用范围。 6.1 关系数据库按主键区分不同的记录 123 6.1.1 把主键定义为自动增长标识符类型 123 ...

    Struts2、Spring、Hibernate三者整合

    #### 四、小结 通过对Struts2、Spring和Hibernate的整合,不仅能够构建出功能完善、性能优异的企业级应用,还能在开发过程中充分利用各框架的优势,降低系统的复杂度。希望以上内容能够帮助读者更好地理解和掌握这...

    hibernate笔记

    #### 小结 Hibernate是一个强大的ORM框架,它通过对象关系映射的方式简化了数据库操作,并提供了一系列高级特性来优化性能和简化开发流程。无论是简单的CRUD操作还是复杂的事务处理,Hibernate都能提供有效的解决...

    JAVA程序开发大全---上半部分

    7.2.11 自动生成SQL语句 113 7.3 JDBC应用实例:登录系统 114 7.4 本章小结 116 第8章 Struts框架的开发及应用 117 8.1 Struts框架概述 117 8.1.1 MVC设计模式 117 8.1.2 Struts框架工作原理 118 8.1.3 Struts框架...

    J2EE电子商务系统开发从入门到精通--基于Struts和Hibernate技术实现

    - Middlegen是一个代码生成工具,可以根据数据库表结构自动生成Java实体类。 - **3.7 hbm2java工具** - hbm2java是Hibernate提供的工具,用于根据.hbm.xml文件生成对应的Java实体类。 **3.8 分页显示的实现** - ...

    J2EE电子商务系统开发从入门到精通基于Struts和Hibernate技术实现

    - Middlegen是一个代码生成工具,它可以自动生成Java实体类和Hibernate配置文件,提高开发效率。 - **3.7 hbm2java工具** - hbm2java工具用于将Hibernate的映射文件(hbm.xml)转换成对应的Java实体类。 - **3.8 ...

    JPA学习笔记-EJB-03JPA主键生成策略总结

    #### 三、小结 以上介绍的是JPA中单字段主键生成的基本策略。每种策略都有其适用场景和优缺点。开发者应根据具体的应用需求和数据库特性选择最适合的生成方式。例如,在性能要求较高的场景下可以选择`IDENTITY`或`...

    SSH练习的小结

    在SSH实践中,Hibernate作为数据访问层,负责将Java对象映射到数据库表,实现了SQL的自动生成和执行,大大减少了数据库操作的代码量。 4. **源码分析** 在SSH实践中,理解源码可以帮助开发者深入掌握每个框架的...

    《MyEclipse 6 Java 开发中文教程》前10章

    Tomcat JSP Web 开发中的乱码问题小结 164 第九章 开发Struts 1.x应用 166 9.1 介绍 166 9.2 创建Struts项目 168 9.2.1 创建Web项目 169 9.2.2 加入 Struts开发功能 169 9.3 使用Struts工具 171 9.3.1 Struts配置...

Global site tag (gtag.js) - Google Analytics