我有一个Eclipse项目代表的数据访问层。我使用Hibernate 3作为持久性框架。所以,在这个项目中,我有我注释的实体和Hibernate使用的资源(persistence.xml,XXX.cfg.xml)。
我现在的问题更多是关于质量保证和生产的问题。我有其他使用此数据访问层的项目。此外,我的实体可能会在项目演变期间进行修改。 当我将其中一个项目发布到QA,并且数据访问层已被修改(实体修改)时,必须相应地修改QA数据库。生产也是如此。
此方案的最佳做法是什么?我使用Maven作为构建系统。你认为hibernate3-maven-plugin的使用是否适用于这种情况?
感谢您的帮助!
答案 0 :(得分:4)
我建议不要在生产/质量检查中使用hibernate3-maven-plugin
(带hbm2ddl.auto
),因为它可能会产生意外/意外的副作用。我想我在某处读过Hibernate创建者自己实际上建议不要在生产中使用hbm2ddl.auto
。
最好只编写自己的SQL补丁来更改数据库架构(它也会更好地进行优化)。
要跟踪脚本,我们有对应于软件版本的目录(在源代码管理中)(例如:1.14.1)以及针对特定版本运行更改的所有SQL修补程序(我们确保将它们保留为可以在没有副作用的情况下运行。在部署1.14.1时,我们运行软件版本所需的脚本(我们还有一个脚本可以自动运行所有必需的脚本,但通常是手动完成的。)