最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--结构程序
只要在hibernate.cfg.xml添加这句话,就能够主动生成数据表
<property name="hibernate.hbm2ddl.auto">update</property>
update:表现主动根据model对象来新更表结构,启动hibernate时会主动检查数据库,如果缺乏表,则主动建表;如果内外缺乏列,则主动添加列。
还有其他的数参:
create:启动hibernate时,主动删除本来的表,建新全部的表,所以每次启动后的前以数据会都失丢。
create-drop:启动hibernate时,主动建创表,程序关闭时,主动把应相的表都删除。所以程序结束时,表和数据也不会再存在。
PS:数据库要先预建立好,因为hibernate只会建表,不会建库
==========================================
表结构和数据总是在程序执行的时候无故的改修,折腾了好长间时,查了很长间时hibernate的数据库射映文件和接口程序,一直没有现发有什么错误,到最后才现发了它!
<property name="hibernate.hbm2ddl.auto" value="update" />
解释如下:
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主动新更数据库结构
如果现发数据库表失丢或新增,请检查hibernate.hbm2ddl.auto的配置 可置设 <propertyname="hibernate.hbm2ddl.auto" value="none" />
文章结束给大家分享下程序员的一些笑话语录:
N多年前,JohnHein博士的一项研究表明:Mac用户平均IQ要比PC用户低15%。超过6000多的参加者接受了测试,结果清晰的显示IQ比较低的人会倾向于使用Mac。Mac用户只答对了基础问题的75%,而PC用户却高达83%。