hibernate.hbm2ddl.auto(自动创建表结构)配置详解

SSH系列教材 (四)- hbm2ddl.auto=update 不起作用 在applicationContext.xml的sessionFactory中配置了有。就表示是自动更新表结构,不需要手段创建的变更。但是有的时候,会失效,不能够自动生成表结构。 阅读详情

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

Hibernate Reference Documentation 3.3.1解释如下:
Automatically validate or export schema DDL to the database when the SessionFactory is created.
With create-drop, the database schema will be dropped when the SessionFactory is closed explicitly.
eg. validate | update | create | create-drop

 


其实这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构。如果不是此方面的需求建议set value="none"。
create:
每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
create-drop :
每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
update:
最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。
validate :
每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

再说点“废话”:
当我们把hibernate.hbm2ddl.auto=create时hibernate先用hbm2ddl来生成数据库schema。
当我们把hibernate.cfg.xml文件中hbm2ddl属性注释掉,这样我们就取消了在启动时用hbm2ddl来生成数据库schema。通常 只有在不断重复进行单元测试的时候才需要打开它,但再次运行hbm2ddl会把你保存的一切都删除掉(drop)---- create配置的含义是:“在创建SessionFactory的时候,从scema中drop掉所以的表,再重新创建它们”。
注意,很多Hibernate新手在这一步会失败,我们不时看到关于Table not found错误信息的提问。但是,只要你根据上面描述的步骤来执行,就不会有这个问题,因为hbm2ddl会在第一次运行的时候创建数据库schema, 后续的应用程序重启后还能继续使用这个schema。假若你修改了映射,或者修改了数据库schema,你必须把hbm2ddl重新打开一次。

***********************************************************

这两天在整理Spring + JPA(Hibernate实现),从网上copy了一段Hibernate连接参数的配置。

<properties>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="create" />
</properties>
结果在测试时,老是发现数据库表数据丢失。这个参数以前没怎么用,查了一圈其它的东东,最后才定位到这个上面。赶紧查了一下Hibernate的参数配置,解释如下:

hibernate.hbm2ddl.auto Automatically validate or export schema DDL to the database when the SessionFactory is created. With create-drop, the database schema will be dropped when the SessionFactory is closed explicitly. eg. validate | update | create | create-drop

其实这个参数的作用主要用于:自动创建|更新|验证数据库表结构。如果不是此方面的需求建议set value="none".

其它几个参数的意思,我解释一下:

validate 加载hibernate时,验证创建数据库表结构
create 每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。
create-drop 加载hibernate时创建,退出是删除表结构
update 加载hibernate自动更新数据库结构

以上4个属性对同一配置文件下所用有的映射表都起作用

 

总结:

1.请慎重使用此参数,没必要就不要随便用。

2.如果发现数据库表丢失,请检查hibernate.hbm2ddl.auto的配置

hibernate.hbm2ddl.auto属性详解 详解hibernate.hbm2ddl.atuo 属性的配置 立即下载

相关推荐

详解hibernate自动创建表的配置

详解hibernate自动创建表的配置 配置自动创建表: update//首次创建项目时用,项目稳定后一般注释这里有4个值: update:表示自动根据model对象来更新表结构,启动hibernate时会自动检查数据库,如果缺少表,则自动建表;如果表里缺少列,则自动添加列。 还有其他的参数: create:启动hibernate时,自动删除原来的表,新建所有的表,所以每次启动后的以前数据都会丢失。 create-drop:启动hibernate时,自动创建表,程序关闭时,自动把相应的表都删除。所以程序

hibernate.hbm2ddl.auto配置

 hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下:      Hibernate Reference Documentation 3.3.1解释如下:Automatically validate or export schema DDL to the database when the SessionFactory is created.Wi

liudeh_009的专栏 880

lift off工艺为什么常用蒸发的方式镀膜?

电子束蒸发中,蒸发物质从源头直接升华并沿直线路径沉积到晶圆上,它可以避免金属在掩模侧壁的覆盖,只在表面进行沉积。在镀膜结束后,在进行光刻胶剥离时,去胶液无法与光刻胶接触反应,导致光刻胶剥离很困难。欢迎加入我的半导体制造知识星球社区,目前社区有1900人左右。我观察到晶圆厂中lift off工艺,镀膜都是用的电子束蒸发的方式,很少有用磁控溅射的方式,为什么?需要增加撕胶工序,将胶面上覆盖的膜层撕掉,使光刻胶露出,这样才容易剥离。上图为磁控溅射的膜层截面图,去胶液很难突破侧壁膜层,进行反应。

1687

Hibernate XML 配置中的 hbm2ddl.auto

在本教程中,我们将了解什么是hibernate 中的hbm2ddl.auto配置。 Hibernatehbm2ddl.auto: hbm2ddl.auto 是一个休眠配置属性。它用于在创建 SessionFactory 时验证模式 DDL 并将其导出到数据库。 如果我们想使用它,我们应该将适当的值传递给hibernate.cfg。xml 如下所示。 hibernate.cfg.xml <hibernate-configuration> <session-factory&.

allway2的博客 2231

uniapp 基于单选框多选框实现上拉触底多选/单选、回显

showPickerCheckbox弹层显示 label和value 类似下拉框的label和value一个意思 键和值。结果:可以传接口(接口只能post请求) 可以搜索 下面是结果图片展示 单选多选都可以。fieldValue回显传的值 传的是字符串 数组的话[1,2]转为1,2格式传入。mode是控制的单选还是多选 true为多选默认值 其余参数 单选多选一样。fieldName字段名 确定后会返回该字段名 根据字段名找对应的传入值。问题:在uniapp上 实现分页多选的操作。下面是组件的完整代码。

2301_76607997的博客 2936

VFH避障/局部路径规划算法

VFH避障/局部路径规划算法 本文章是我看《The Vector Field Histogram-Fast Obstacle Avoidance for Mobile Robots》论文时候的笔记,感兴趣的欢迎去看原论文。 VFH中有一些概念是从其他算法中借鉴过来的,并且VFH算法本身就是对VFF(Virtural Force Field)的一种改进,其中有很多的相似之处。所以按照原论文的思路,先介绍由CMU提出的Certainty Grid算法中的一些概念,再介绍一下势场法中的一些概念,接着介绍一下VFF

qq_41845878的博客 8120

hibernate 中的hibernate.hbm2ddl.auto

在hibernate中,如果在hibernate.cfg.xml文件中,将hibernate.hbm2ddl.auto设置为update(或者cretae-drop)也可以,如下update则在运行应用程序时(第一次),会自动建立起表的结构(前提是先建立好数据库)。要注意的是,当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会

jackyrongvip的专栏 646

K-Core, K-Shell & K-Crust傻傻分不清楚

K-Core(K-核)就是所有大于等于K的K-Shell的并集;K-Crust(K-皮)就是所有小于等于K的K-shell的并集。

欢迎订阅 -- 小源笔迹 2256

hibernate.hbm2ddl.auto参数说明

hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下: properties>            property name="hibernate.show_sql" value="true" />                  property name="hibernate.hbm2ddl.auto" value="create"

hongweigg的专栏 6008

【Tessy】集成测试小白入门指导

本文详细介绍了如何进行集成测试的小白入门指导,从新建工程到设计用例,实现集成测试的过程详细步骤

qq_37282365的博客 1192

斗鱼直播间弹幕爬虫实战:WebSocket连接与实时数据采集

在数据驱动的时代,直播平台的弹幕数据蕴含着巨大的价值——用户行为分析、舆情监控、弹幕情感分析、直播热度评估等应用场景层出不穷。斗鱼作为国内领先的直播平台,其弹幕系统基于WebSocket协议实现实时双向通信。本文将带您从零开始,使用Python构建一个完整的斗鱼直播间弹幕爬虫系统。

2201_76125261的博客 137

hibernate.hbm2ddl.auto配置详解

hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下:<properties><property name="hibernate.show_sql" value="true" /><property name="hibernate.hbm2ddl.auto" value="create" /></properti...

weixin_30877181的博客 76

改进YOLOv9的CT图像肺结节检测与分类算法:从原理到实战

本文将详细介绍如何改进YOLOv9算法,使其更好地适应CT图像肺结节检测与分类任务。我们将从数据集准备、模型改进、训练优化到最终部署,完整呈现一个端到端的深度学习项目,并提供完整的代码实现。

YOLO 188

[转]hibernate.hbm2ddl.auto .

转:[url]http://blog.csdn.net/kjfcpua/article/details/4272415[/url] hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下: [code="xml"] [/code] Hibernate Reference Document...

chyx72的博客 136

网络流量异常信息分析方法研究

本课题针对网络安全中网络流量异常的分析方法进行研究,提出一种基于机器学习和深度学习的异常检测算法。该算法采用卷积神经网络(CNN)和长短时记忆神经网络(LSTM)结合的方式,通过训练得到二分类模型,从而实现对网络流量异常的检测。随着互联网的飞速发展,网络攻击事件日益增多,网络安全问题成为了亟待解决的问题之一。常见的网络攻击手段包括 DDoS 攻击、SQL 注入、XSS 攻击等,这些攻击手段可能导致网络系统发生异常,给网络运维、数据安全带来极大的挑战。

肥晨开发的学习之路 1037

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

hibernate.hbm2ddl.auto 含义

hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下: &lt;properties&gt; &lt;property name="hibernate.show_sql" value="true" /&gt;  &lt;property name="hibernate.hbm2ddl.auto" value="create" /&gt; &

mzr122的专栏 212

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Hibernate 自动创建表结构

说起来还是对于Hibernate不够了解,到现在才发现Hibernate竟然有如此给力的功能,但同时又给像我这样对hibernate不够理解的人添加了很多烦恼,例如最近在开发测试一个定时任务的时候发现每次系统启动都会在一个task表中添加一个多余的字段,而且这个字段赋值不能为空,然后就反复各种折腾,(启动好了去数据库把多出来的这个字段干掉是可以继续测试的。。。。)最后程序调好了,但是无缘无故的添加

程序员随手笔记 1164

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

自动创建表

一、通过Hibernate的ShemaExport来创建1)实体类package com.xiaomo.vo;public class User {private int id;// 用户idprivate String name;// 用户名称private int age;// 用户年龄@Overridepublic String toString() {return "id:"+this.i...

starthaike的博客 633

关于Hibernate一个配置参数hibernate.hbm2ddl.auto

hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下: properties>            property name="hibernate.show_sql" value="true" />                  property name="hibernate.hbm2ddl.auto" value="create" />

Xia.WT的java学习笔记 317

hibernate.hbm2ddl.auto参数

这个问题以前朋友文的 感觉确实很好的东西 所以就决定在这里留个脚印~! Java代码   &lt;properties&gt;              &lt;property name="hibernate.show_sql" value="true" /&gt;                    &lt;property name="hibernate.hbm...

kingwolfs的博客 164

hibernate.hbm2ddl.auto节点配置

hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下: &lt;properties&gt; &lt;property name="hibernate.show_sql" value="true" /&gt;&lt;wbr&gt;&lt;wbr&gt;&lt;wbr&gt;&lt;wbr&gt;&lt;wbr&g

web开发自学 70

nhibernate中hbm2ddl.auto/hbm2ddl.keywords参数配置详解

hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下: <property name="hbm2ddl.auto">create-drop</property>update : auto execute SchemaUpdate on BuildSessionFactory create : auto execute S...

banpai3782的博客 217

Hibernate自动创建表

只要在hibernate.cfg.xml添加这句话,就可以自动生成数据表 update update:表示自动根据model对象来更新表结构,启动hibernate时会自动检查数据库,如果缺少表,则自动建表;如果表里缺少列,则自动添加列。 还有其他的参数: create:启动hibernate时,自动删除原来的表,新建所有的表,所以每次启动后的以前数据都会丢失。 create-drop:启动

chuang504321176的博客 346
上一篇: 解决PowerDesigner中DBMS设置的问题
下一篇: JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法
Ethan_Fu
博客等级 码龄15年 41粉丝 42原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值