我在一个非常早期的项目中使用Hibernate EntityManager和Hibernate Annotations for ORM。该项目需要尽快启动,但规格不断变化,我担心系统将启动并收集实时数据,然后规格将再次发生变化,并且我将处于需要更改数据库模式。处理不断变化的MySQL模式需求的策略?
我该如何设置以减少这种影响?是否有任何处理这种迁移的开源项目? Hibernate可以自动执行此操作(不擦除数据库)?
您的建议非常感谢。
我在一个非常早期的项目中使用Hibernate EntityManager和Hibernate Annotations for ORM。该项目需要尽快启动,但规格不断变化,我担心系统将启动并收集实时数据,然后规格将再次发生变化,并且我将处于需要更改数据库模式。处理不断变化的MySQL模式需求的策略?
我该如何设置以减少这种影响?是否有任何处理这种迁移的开源项目? Hibernate可以自动执行此操作(不擦除数据库)?
您的建议非常感谢。
这是一个功能或组织问题,而不是技术问题。没有工具会自动猜测如何将数据从一个模式迁移到另一个模式。您最好学习如何编写存储过程以迁移数据。
您可能需要禁用约束,创建临时表和列,复制大量数据,然后删除临时表和列并重新启用约束来迁移数据。
一旦进入维护模式,每个修改模式的新功能都应该带有脚本,允许从当前模式和生产中的数据迁移到新模式。
没有系统可能只从原始和最终模式自动创建数据迁移脚本。没有足够的信息。
考虑例如一个新的列。它是否应该包含默认值?或从其他字段/表中计算出的值。
但有一点要对这种东西没有工具的支持。
我认为你可以事先做的最好的事情:
Hibernate可以用数据库中的数据更新数据库实体模型。所以,这样做并编写用于设置或删除数据关系的Java迁移代码。
这个工作,我们已经做了多次。但是,当然,要设法遵循灵活的开发流程;让你知道肯定第一,然后重新评估需求 - 混乱等。