我只是想听听Hibernate专家对基于Hibernate / JPA的项目的数据库模式生成最佳实践的看法。特别:
项目刚开始时要使用什么策略?是否建议让Hibernate在此阶段自动生成模式,还是从项目的最早阶段手动创建数据库表更好?
假装在整个项目中都是使用Hibernate生成架构的,那么在系统发布到生产环境之前,最好禁用自动架构的生成并手动创建数据库架构吗?
在系统投入生产后,维护实体类和数据库模式的最佳实践是什么(例如,添加/重命名/更新列,重命名表等)?
始终建议手动生成模式,最好使用支持数据库模式修订的工具(例如伟大的Liquibase)手动生成模式。从实体生成模式在理论上很棒,但是在实践中却很脆弱,从长远来看会引起很多问题(请相信我)。
在生产环境中,最好总是手动生成并查看模式。
您对实体进行更新,并创建匹配的更新脚本(修订)以更新数据库架构以反映实体更改。您可以创建一个自定义解决方案(我已经写了一些)或使用更流行的东西,例如liquibase(它甚至支持架构更改回滚)。如果您使用的是诸如maven或ant之类的构建工具,建议将db schema update util插入构建过程,以使新的构建与该架构保持同步。