hbm2ddl工具位于Hibernate核心软件包中,而hbm2java工具位于Hibernate工具包中,因此需要下载Hibernate工具包,文件形式为HibernateTools-X.zip。

Hibernate提供了从映射文件到数据库Schema的转换工具,名为hbm2ddl工具。使hbm2ddl工具时,必须在Hibernate的配置文件中设置hibernate。dialect属性,显式指定底层数据库的SQL方言。 
<target name="schema" depends="compile"> 
  <taskdef name="hbm2ddlTask" 
           classname="org.hibernate.tool.ant.HibernateToolTask" 
           classpathref="project.class.path" /> 
  <hbm2ddlTask destdir="${schema.dir}"> 
       <configuration 
            configurationfile="${class.root}/hibernate.cfg.xml"  /> 
  <hbm2ddl export="true"  console="true"  create="true" 
           drop="true"  outputfilename="dbName.sql"  /> 
  </hbm2ddlTask> 
</target> 
hbm2ddl任务的属性 
export:          若为true,表示在数据库中执行所生产的ddl脚本。默认为false。 
drop:            若为true,表示会生成删除数据库中表的ddl脚本。默认为false。 
create:          若为true,表示会生成创建数据库中表的ddl脚本。默认为false。 
outputfilename: 指定存放ddl脚本的文件。 
update:          若为true,表示会对比现有数据库及映射文件,生成用于增量更新数据库的ddl。默认为false。 
haltonerror:    若为true,表示遇到错误时会终止运行ant工程。默认为false。 
format:          设定ddl脚本中SQL语句的格式。 
delimiter:       为ddl脚本设置行结束符。 
console:         若为true,表示会在控制台显示生成的ddl脚本。默认为true。

使用xml配置hibernate。通常命名为hibernate.cfg.xml 
<hibernate-configuration> 
  <session-factory> 
     <property name="dialect"> 
        org.hibernate.dialect.MySQLDialect</property>

<property name="connection.driver_class"> 
         com.mysql.jdbc.Driver</property>

<property name="connection.url"> 
         jdbc:mysql://localhost:3306/dbName</property> 
     
     <property name="connection.username">root</property> 
     <property name="connection.password">tiger</property> 
     <property name="show_sql">true</property>

<mapping resource="xxx.hbm.xml"  />

</session-factory> 
</hibernate-configuration>

若Hibernate的配置文件为java属性文件,必须以编程方式声明需要加载的映射文件,xml则不必调用。 
    SessionFactory sessionFactory = new Configuration() 
          .addClass(xx.class).buildSessionFactory(); 
默认情况下,Hibernate不会加载hibernate.cfg.xml文件,必须通过Configuration的configure()方法来显式加载hibernate.cfg.xml文件。  
    SessionFactroy sessionFactory = new Configuration() 
          .configure().buildSessionFactory();

持久化类使用JavaBean的风格,为需要被访问的属性提供get和set方法,这两个方法也称为持久化类的访问方法。

为什么hibernate中持久化对象要有set和get方法? 
java应用程序调用对象的get方法读取外界信息后调用set方法,把信息存到对象中;Hibernate调用对象的get方法读取对象信息后存到数据库调用set方法把数据从数据库中独取出来后存到对象中。Hibernate可以访问任何级别的get、set方法。

基本数据类型的缺点在与无法表达null值;包装类型的默认值是null。 
在对象-关系映射文件中,<property>元素的access属性用于指定Hibernate访问持久化类的属性方式。access有一下两个值可选:property:默认值,表明hibernate通过相应的get和set方法来访问类的属性。field属性表明Hibernate运用java反射机制直接访问类的属性,不需get和set方法。

在SQL语法中,标识符是指用于为数据库表、视图、字段或索引等明名的字符串,常规标识符不包含空格,也不包含特殊字符;若数据库表名或字段名中包含空格,或包含特殊字符,则可以使用引用标识符。'xxx xx'

创建数据库的命名策略:实现Hibernate的org.hibernate.cfg.ImprovedNamingStragegy接口。它提供了两个参考实现类:org.hibernate.cfg.DefaultNamingStragegy类(默认实现类);org.hibernate.cfg.ImproveNamingStragegy类(高级实现类)。

hbm2ddl的更多相关文章

  1. hibernate.hbm2ddl.auto配置详解

    hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下:<properties><property name="hibernate. ...

  2. Hibernate hbm2ddl.auto DDL语句 控制台输出的配置

    在开发中我们需要知道hbm2ddl.auto生成的SQL语句,来判断代码的正确性,现在记录配置的过程. Hibernate的DDL语句在控制台的输出配置: 一.在lib中确保只有下面的三个相关包:1) ...

  3. Mingyang.net:hibernate.hbm2ddl.auto配置详解【转】

    原文地址:http://www.cnblogs.com/feilong3540717/archive/2011/12/19/2293038.html hibernate.cfg.xml 中hibern ...

  4. hibernate配置之<property name="hbm2ddl.auto">create</property>导致每次创建SessionFactory都清空数据库中的数据

    参考:http://stackoverflow.com/questions/6611437/how-to-make-hibernate-not-drop-tables 我遇到的问题就是: List l ...

  5. hibernate hbm2ddl auto 不能创建表的问题

    http://fuckgis.blog.sohu.com/148751122.html ________________________________________________________ ...

  6. hibernate篇章四-- Hibernate配置文件中hiberante.hbm2ddl.auto四个参数的配置

    我们在搭建环境的时候,在配置文件中有一个属性标签为: <property name="hibernate.hbm2ddl.auto">     </propert ...

  7. Hibernate配置文件中hiberante.hbm2ddl.auto四个参数的配置

    我们在搭建环境的时候,在配置文件中有一个属性标签为: <property name="hibernate.hbm2ddl.auto">     </propert ...

  8. Hibernate配置文件的hbm2ddl.auto属性

    今天遇到一个有意思的问题,我目前做的一个网站采用Spring MVC + Spring + Hibernate的架构,我通过页面插入了一些数据到数据库,可是每次重启tomcat之后,数据都莫名其妙地丢 ...

  9. (转)hibernate 之hiberante.hbm2ddl.auto 参数的配置

    我们在搭建环境的时候,在配置文件中有一个属性标签为: 完整配置如下 <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernat ...

随机推荐

  1. Mybatis 学习-1

    本次MyBatis基础实例教程主要讲述MyBatis在项目中的配置方法,实体对象的关系映射.关联关系,以及如何实现一个BaseDao的功能 实例数据库的表结构 CREATE TABLE `blog_u ...

  2. iOS 10 消息推送(UserNotifications)秘籍总结(一)

    前言 之前说会单独整理消息通知的内容,但是因为工(就)作(是)的(很)事(懒)没有更新文章,违背了自己的学习的初衷.因为互联网一定要有危机意识,说不定眼一睁,我们就out丢了饭碗. 图片来源网络.jp ...

  3. iOS开发中你是否遇到这些经验问题

    前言 小伙伴们在开发中难免会遇到问题, 你是如何解决问题的?不妨也分享给大家!如果此文章其中的任何一条问题对大家有帮助,那么它的存在是有意义的! 反正不管怎样遇到问题就要去解决问题, 在解决问题的同时 ...

  4. BZOJ4007 [JLOI2015]战争调度

    根本想不出来... 原来还是暴力出奇迹啊QAQ 无限ymymym中 /************************************************************** Pr ...

  5. DB2存储过程语法规则

    如何声明一个存储过程CREATE PROCEDURE 存储过程名(IN 输入变量名 输入变量类型,OUT 输出变量名 输出变量类型)紧跟其后的是存储过程属性列表            常用的有:LAN ...

  6. java面向对象编程—— 第三章 程序流程控制

    3.1流程控制 三种基本技术可以改变程序的控制流程: ①   调用方法:调用方法将导致控制流程离开当前方法,转移到被调用的方法: ②   选择:java中有两种做出选择的机制:if/else语句和sw ...

  7. True bar

    真彩bar /***========================================================================= ==== ==== ==== D ...

  8. c++普通高精加

    //作为一名蒟蒻,还请诸位不要吐槽. //第一次打c++高精加,内心有点小激动. //为codevs3116 高精度练习之加法 //程序太简单,就不打注释了. #include<cstdio&g ...

  9. iOS App创建桌面快捷方式

    http://www.cocoachina.com/ios/20150827/13243.html 先mark,暂时用不到

  10. IT公司100题-17-第一个只出现一次的字符

    问题描述: 在一个字符串中找到第一个只出现一次的字符.例如输入asdertrtdsaf,输出e.   分析: 最简单的方法是直接遍历,时间复杂度为O(n^2). 进一步思考: 字符串中的字符,只有25 ...