Hibernate数据库更改

时间:2014-10-21 12:33:18

标签: java database hibernate mapping schema

我们正在使用Hibernate从数据库中获取数据。问题是我们有时会改变我们的表格。事实上,我们多次遇到Hibernate的数据库映射对数据库无效的问题。

有人能给我一个如何解决这个问题的提示吗?

简单示例:

今天用户表看起来像:

  • id
  • 姓名
  • Forename
  • Adress
  • 用户名

在Futur中,它看起来像:

  • id
  • 姓名
  • Forename
  • fk_Adress
  • 用户名
  • fk_Usergroup
  • fk_rightgroup

尽可能保持简单是很重要的。

我们正在使用MsSQL和XML Mapping。

我感谢每一个建构性的答案。

2 个答案:

答案 0 :(得分:2)

hibernate.cfg.xml文件中添加属性:

<property name="hibernate.hbm2ddl.auto">update</property>

可用值:

  

验证|更新|创建|创建降

通过使用此属性,您需要更改它将自动更新到数据库的POJO和.hbm.xml文件。

createupdate之间的区别在于,如果已创建数据库表,update将更新您的数据库,如果未创建数据库表,则将创建。

create会在数据库中创建表,即使表已经存在,它也会删除所有表并再次创建表,从而导致先前插入的数据丢失。

答案 1 :(得分:1)

如果您的数据库和OO代码是独立管理的,那么您可能无法避免此问题。但是,如果您正在尝试集中发展数据模型,那么您可以选择 - 首先从OO端执行此操作,并使数据库保持最新,或修改数据库并更新OO中的映射侧。

如果你只关注数据库,那么映射就必须赶上。如果你想更容易地做到这一点,那么改进OO模型并确保你使用的映射是有意义的 - 使用hibernate的DDL生成功能来自动更新数据库,或者将DDL写入一个新的DB以便你可以使用DB用于传播更新的比较工具。

重大变化将打破变革 - 这几乎是不可避免的。一般来说,如果您的数据库纯粹是为了支持OO系统,那么我建议首先从OO映射进行设计。