hibernate...TableMetadata加载东西慢怎么办?

现象

启动org.hibernate.tool.hbm2ddl.TableMetadata 一直在家在什么东西,特别浪费时间,日志如下:

09:54:39  org.hibernate.tool.hbm2ddl.TableMetadata table found: P2PDB.LOGIN
, 09:54:39  org.hibernate.tool.hbm2ddl.TableMetadata columns: [username, password]
, 09:54:39  org.hibernate.tool.hbm2ddl.TableMetadata foreign keys: []
, 09:54:39  org.hibernate.tool.hbm2ddl.TableMetadata indexes: [sys_c0013515]
, 09:54:53  org.hibernate.tool.hbm2ddl.TableMetadata table found: P2PDB.NEWMEDIALOGIN
, 09:54:53  org.hibernate.tool.hbm2ddl.TableMetadata columns: [username, email, state, type, password]
, 09:54:53  org.hibernate.tool.hbm2ddl.TableMetadata foreign keys: []
, 09:54:53  org.hibernate.tool.hbm2ddl.TableMetadata indexes: [sys_c0029664]
, 09:56:53  org.hibernate.tool.hbm2ddl.TableMetadata table found: P2PDB.NEWS_INFO
, 09:56:53  org.hibernate.tool.hbm2ddl.TableMetadata columns: [site, fetchtime, keywords, updatetime, pubdate, plate, url, pubtime, content, contenthtml, title, source, commentshow, commenttotal]
, 09:56:53  org.hibernate.tool.hbm2ddl.TableMetadata foreign keys: []
, 09:56:53  org.hibernate.tool.hbm2ddl.TableMetadata indexes: [news_info_index, news_info_primary]
, 09:57:08  org.hibernate.tool.hbm2ddl.TableMetadata table found: P2PDB.QZONE_STATISTICS_AGE
, 09:57:08  org.hibernate.tool.hbm2ddl.TableMetadata columns: [createtime, id, numbers, age]
, 09:57:08  org.hibernate.tool.hbm2ddl.TableMetadata foreign keys: []
, 09:57:08  org.hibernate.tool.hbm2ddl.TableMetadata indexes: []
, 09:57:24  org.hibernate.tool.hbm2ddl.TableMetadata table found: P2PDB.QZONE_STATISTICS_CAREER
, 09:57:24  org.hibernate.tool.hbm2ddl.TableMetadata columns: [createtime, id, numbers, career]
, 09:57:24  org.hibernate.tool.hbm2ddl.TableMetadata foreign keys: []
, 09:57:24  org.hibernate.tool.hbm2ddl.TableMetadata indexes: [sys_c0029421]
, 09:57:38  org.hibernate.tool.hbm2ddl.TableMetadata table found: P2PDB.QZONE_STATISTICS_GENDER
, 09:57:38  org.hibernate.tool.hbm2ddl.TableMetadata columns: [createtime, id, numbers, gender]
, 09:57:38  org.hibernate.tool.hbm2ddl.TableMetadata foreign keys: []
, 09:57:38  org.hibernate.tool.hbm2ddl.TableMetadata indexes: [sys_c0029

分析
hibernate配置文件中是否有
<property name="hibernate.hbm2ddl.auto">update</property> 这个配置
其它几个参数的意思:

  • validate 加载hibernate时,验证创建数据库表结构
  • create 每次加载hibernate,重新创建数据库表结构
  • create-drop 加载hibernate时创建,退出是删除表结构
  • update 加载hibernate自动更新数据库结构

感觉你在启动时,去创建或者更新了数据库中的表而导致启动时间很长。
如果有,把这行配置去掉试试。

总结:

  • create:表示启动的时候先drop,再create

  • create-drop: 也表示创建,只不过再系统关闭前执行一下drop

  • update: 这个操作启动的时候会去检查schema是否一致,如果不一致会做scheme更新
  • validate: 启动时验证现有schema与你配置的hibernate是否一致,如果不一致就抛出异常,并不做更新

在本机开发调试初始化数据的时候可以选择create、update等。

但是网站发布正式版本的时候,对数据库现有的数据或表结构进行自动的更新是很危险的。此时此刻应该由DBA同志通过手工的方式进行后台的数据库操作。

hibernate.hbm2ddl.auto的值建议是“none”或“validate”。“validate”应该是最好的选择:这样 spring在加载之初,如果model层和数据库表结构不同,就会报错,这样有助于技术运维预先发现问题

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值