• 执行hbm2java工具和hbm2ddl工具


    下面内容整理自《精通hibernate》 第二版


    Hibernate提供了从映射文件到Java源码的转换工具,名为hbm2java工具,能够利用ANT工具来执行它。

    <span style="font-size:18px;"><target name="codegen" depends="prepare">
        <taskdef name="hbm2javaTask"
                        classname="org.hibernate.tool.ant.HibernateToolTask"
                        classpathref="project.class.path" />
        <hbm2javaTask destdir="${source.root}"
            <configuration configurationfile="${class.root}/hibernate.cfg.xml" />
            <hbm2java/>
        </hbm2javaTask>
    <target>   </span>

    以上代码定义了一个hbm2javaTask任务,它的destdir属性指定Java源文件存放在${source.root}文件夹(即src子文件夹)下。<configuration>子元素指定Hibernate的配置文件为classes/hibernate.cfg.xml。

    hibernate.cfg.xml文件是XML格式的配置文件。

    hbm2javaTask任务重的<hbm2java>子任务就是Hibernate提供的hbm2java工具。它能依据hbm.xml映射文件生成java源文件。

    <hbm2java>任务还能够包括两个属性“jdk5”和“ejb3”。使用方法例如以下:

    <hbm2java jdk5="true|false" ejb3="true|false">

    <hnm2java>任务的jdk5属性指定是否在生成的源码中包括JDK5的语法特性。ejb3属性指定是否在生成的Java源码中包括ejb3的特征,这两个属性的默认值都是false。


    Hibernate提供了从映射文件到数据库Schema的转换工具,名为hbm2ddl工具,使用hbm2ddl工具时。必须在Hibernate的配置文件里设置hibernate.dialect属性,显示指定底层数据库的SQL方言,由于hbm2ddl工具会依据数据库的SQL方言来生成对应的数据库Schema。

    <span style="font-size:18px;"><target name="schema" depends="compile">
        <taskdef name="hbm2javaTask"
                        classname="org.hibernate.tool.ant.HibernateToolTask"
                        classpathref="project.class.path" />
        <hbm2javaTask destdir="${schema.dir}"
            <configuration configurationfile="${class.root}/hibernate.cfg.xml" />
            <hbm2ddl export="true" console="true" create="true"/>
                drop="true" outputfilename="sampledb.sql" />
        </hbm2javaTask>
    <target> </span>

    以上代码定义了一个hbm2ddlTask任务。它的destdir属性指定生成的DDL脚本文件存放在${schema.dir}文件夹(即schema子文件夹)下。<configuration>子元素指定Hibernate的配置文件为classes/hibernate.cfg.xml。

    hbm2ddlTask任务重的<hbm2ddl>子任务就是Hibernate提供的hbm2ddl工具,它能依据hbm.xml映射文件生成对应的数据表。


    <hbm2ddl>任务属性

    export 假设为true,表示会在数据库中运行所生成的DDL脚本。默觉得true 

    drop 假设为true,表示会生成删除数据库中表的DDL脚本。默觉得true

    create 假设为true。表示会生成创建数据库中表的DDL脚本。默觉得true

    outputfilename 指定存放DDL脚本的文件

    update 假设为true。表示会对照现有数据库及映射文件,生成用于增量更新数据库的DDL。值得注意的是,不能正式投入执行的数据库中採用这样的增量更新。由于它眼下还不是很健壮,不能保证生成准确的增量更新DDL,也不能保证底层数据库能够顺利执行增量更新DDL。默认值为false

    haltonerror 假设为true,表示遇到错误时会终止执行ANTproject。默认值为false

    format 设定DDL脚本中SQL语句的格式

    delimiter 为DDL脚本设置行结束符

    console 假设为true,表示会在控制台显示生成DDL脚本。默认值为true

  • 相关阅读:
    如何保证 Redis 缓存与数据库双写一致性?
    如何合理地估算线程池大小?
    不用装工具,一条 Linux 命令就能实现文件上传下载!
    看了 Google 大神 Jeff Dean 的传说,我拜服了~
    div设置水平垂直居中
    "起用"与"启用"
    徇私舞弊
    精选排比金句20例
    一笔画图推
    一笔画
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6791184.html
Copyright © 2020-2023  润新知