hibernate配置问题
<propertyname="hbm2ddl.auto">create</property>创建表后退出无法自动删除造成很多冗余数据。换成none也只能解决一时的问题。。...
<property name="hbm2ddl.auto">create</property> 创建表后退出无法自动删除造成很多冗余数据。换成none也只能解决一时的问题。。求一个合理解释分不是问题。
展开
4个回答
展开全部
对于 hbm2dll.auto 各个取值的意义如下:
1.create-drop : hibernate一开始就发送一个drop语句,再执行create语句创建表,当sessionFactory关闭时又执行drop语句删除表。结果就是,当表存在时,首先会被drop掉,然后又创建,最终被drop,如果表不存在,一开始虽然hibernate还是会发送drop语句,当时因为表不存在而drop失败。
2.create:hibernate首先会发送一个drop语句,如果表存在则会被drop掉,然后hibernate再发送create语句创建表。
3.update:hibernate会首先查询数据库看是否存在此表,如果存在则不管,如果不存在则会先发送一个create语句创建一个表。
4.validate:每次插入数据之前都会验证数据库中的表结构和hbm文件的结构是否一致。如果表不存在,则报错。
上面是解释是摘录别人的资料 , 你用的是create,也就是说在应用关闭的时候并不会去删除数据库表,我认为你想要的结果应该是create-drop;
出自http://zhidao.baidu.com/question/183812508.html
1.create-drop : hibernate一开始就发送一个drop语句,再执行create语句创建表,当sessionFactory关闭时又执行drop语句删除表。结果就是,当表存在时,首先会被drop掉,然后又创建,最终被drop,如果表不存在,一开始虽然hibernate还是会发送drop语句,当时因为表不存在而drop失败。
2.create:hibernate首先会发送一个drop语句,如果表存在则会被drop掉,然后hibernate再发送create语句创建表。
3.update:hibernate会首先查询数据库看是否存在此表,如果存在则不管,如果不存在则会先发送一个create语句创建一个表。
4.validate:每次插入数据之前都会验证数据库中的表结构和hbm文件的结构是否一致。如果表不存在,则报错。
上面是解释是摘录别人的资料 , 你用的是create,也就是说在应用关闭的时候并不会去删除数据库表,我认为你想要的结果应该是create-drop;
出自http://zhidao.baidu.com/question/183812508.html
展开全部
你这个问题问的很有问题,<property name="hbm2ddl.auto">create</property> 这个设置本身就是为了懒人不想手动见表或者批量建表才这么设置的,一旦设置成功后就会修改这个设置值;谁家的表重启服务器一次就重建一次的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
改成update
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
改成create-drop
validate 加载hibernate时,验证创建数据库表结构
create 每次加载hibernate,重新创建数据库表结构
create-drop 加载hibernate时创建,退出是删除表结构
update 加载hibernate自动更新数据库结构
validate 加载hibernate时,验证创建数据库表结构
create 每次加载hibernate,重新创建数据库表结构
create-drop 加载hibernate时创建,退出是删除表结构
update 加载hibernate自动更新数据库结构
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询