`
xgbjmxn
  • 浏览: 270545 次
  • 性别: Icon_minigender_1
  • 来自: 新乡
社区版块
存档分类
最新评论

Hibernate auto produce

阅读更多
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(true, true);; 

     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文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接

 
分享到:
评论

相关推荐

    hibernate.hbm2ddl.auto属性详解

    详解hibernate.hbm2ddl.atuo 属性的配置

    hibernate3 hibernate3

    Hibernate支持多种主键策略,如自动生成(GenerationType.AUTO)、固定值(GenerationType.IDENTITY)等。 4. Session:它是Hibernate的主要工作单元,用于在应用程序和数据库之间建立会话。Session提供了一种透明...

    Hibernate,hibernate笔记

    `hibernate.hbm2ddl.auto`可以设置为"create-drop"、"create"、"update"或"validate",分别对应在启动时创建/删除数据库结构、创建数据库结构、更新数据库结构或验证数据库结构。 3. **HQL(Hibernate Query ...

    Hibernate入门到精通

    "Hibernate入门到精通" Hibernate 是一个基于Java的ORM(Object-Relational Mapping,对象关系映射)框架,它提供了一种简洁高效的方式来访问和操作关系数据库。下面是 Hibernate 的主要知识点: Hibernate 简介 ...

    hibernate annotation hibernate3

    @GeneratedValue(strategy=GenerationType.AUTO) private Long id; ``` 三、字段级注解 1. 基本类型注解:`@Column` `@Column`注解用于定义字段如何映射到数据库表的列,可以设置列名、长度、是否允许为空等...

    hibernate jar包:hibernate-commons-annotations-4.0.1.Final.jar等

    Hibernate.jar包,Hibernate可以应用在任何使用JDBC的场合,包含 hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.12.Final.jar hibernate-ehcache-4.1.12.Final.jar hibernate-entitymanager-...

    hibernate基础jar包

    Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者使用面向对象的方式来操作数据库,极大地简化了数据访问层的编程工作。这个压缩包包含了Hibernate的基础jar包,这些jar文件是开发Hibernate应用所...

    hibernate 5.2.15

    hibernate 5.2.15 hibernate 5.2.15 hibernate 5.2.15 hibernate 5.2.15 hibernate 5.2.15hibernate 5.2.15

    hibernate和MySQL的jar

    标题中的“hibernate和MySQL的jar”指的是Hibernate ORM框架与MySQL数据库之间的连接库。Hibernate是一种流行的Java对象关系映射(ORM)工具,它允许开发者使用面向对象的编程方式来操作数据库,而无需直接编写SQL...

    kingbaseV8 hibernate jdbc 驱动

    在Java开发环境中,与KingbaseV8数据库进行交互通常会用到Hibernate框架和JDBC驱动。 Hibernate是一个优秀的对象关系映射(ORM)框架,它简化了Java应用程序对数据库的操作,通过将Java对象与数据库表进行映射,...

    hibernate3全部jar包:hibernate3.jar.zip 下载

    Hibernate3 是一个强大的Java持久化框架,它允许开发者将数据库操作与业务逻辑解耦,使得应用程序的开发更为简便。这个“hibernate3全部jar包:hibernate3.jar.zip”包含了所有必要的库文件,方便用户一次性下载并...

    HibernateTools-3.2.4

    HibernateTools是Java开发人员在使用Hibernate ORM框架时的有力辅助工具集,主要目的是为了提高开发效率,简化数据库操作。在HibernateTools 3.2.4版本中,它包含了一系列的特性与插件,以支持更便捷地进行对象关系...

    hibernate的相关jar包

    2. 使用`hibernate.hbm2ddl.auto`属性自动创建或更新数据库表。例如,设置为`create`会在每次启动应用时清空并重新创建表,设置为`update`则会在已有表的基础上更新结构: ```xml &lt;property name="hibernate.hbm2...

    hibernate-release-4.1.4

    【描述】中的"hibernate的jar包"指的是Hibernate框架的运行库文件,这些JAR文件包含了Hibernate的所有核心API、实现和依赖库,如Hibernate Commons Annotations、Hibernate EntityManager、Hibernate Core等。...

    Hibernate3的依赖包

    Hibernate3是一个广泛使用的Java对象关系映射(ORM)框架,它允许开发者用面向对象的方式处理数据库操作,极大地简化了Java应用程序与数据库之间的交互。在这个"Hibernate3的依赖包"中,包含了运行Hibernate3应用...

    hibernate jar包程序文件

    hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.12.Final.jar hibernate-ehcache-4.1.12.Final.jar hibernate-entitymanager-4.1.12.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar ...

    hibernate-extensions和Middlegen-Hibernate

    《hibernate-extensions与Middlegen-Hibernate:数据库到Java对象的自动化转换》 在Java的持久化层开发中,Hibernate作为一款强大的ORM(对象关系映射)框架,极大地简化了数据库操作。然而,手动编写实体类和映射...

    hibernate关联映射详解

    hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate...

    hibernate的dtd 包含hibernate.properties

    在这个主题中,我们主要关注的是Hibernate的配置文件`hibernate.properties`以及它的DTD(Document Type Definition)文件,包括`hibernate-configuration-3.0.dtd`和`hibernate-mapping-3.0.dtd`。 首先,`...

    Hibernate+IDEA 2018 一个hibernate程序

    &lt;property name="hibernate.hbm2ddl.auto"&gt;update &lt;!-- 是否显示SQL语句 --&gt; &lt;property name="hibernate.show_sql"&gt;true &lt;!-- SQL格式化 --&gt; &lt;property name="hibernate.format_sql"&gt;true &lt;!-- 映射文件...

Global site tag (gtag.js) - Google Analytics