Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate方法论_Hibernate_Maven_Methodology - Fatal编程技术网

Hibernate方法论

Hibernate方法论,hibernate,maven,methodology,Hibernate,Maven,Methodology,我有一个由Eclipse项目表示的数据访问层。我使用Hibernate3作为持久性框架。因此,在这个项目中,我有带注释的实体和Hibernate使用的资源(persistence.xml,XXX.cfg.xml) 我现在的问题更多的是关于如何进行QA和生产。我还有其他使用这个数据访问层的项目。此外,我的实体可能会在项目发展过程中被修改。 当我将其中一个项目发布给QA时,数据访问层已经修改(实体修改),QA数据库也必须相应地修改。生产也是如此 此场景的最佳实践是什么?我使用Maven作为构建系统。

我有一个由Eclipse项目表示的数据访问层。我使用Hibernate3作为持久性框架。因此,在这个项目中,我有带注释的实体和Hibernate使用的资源(persistence.xml,XXX.cfg.xml)

我现在的问题更多的是关于如何进行QA和生产。我还有其他使用这个数据访问层的项目。此外,我的实体可能会在项目发展过程中被修改。 当我将其中一个项目发布给QA时,数据访问层已经修改(实体修改),QA数据库也必须相应地修改。生产也是如此

此场景的最佳实践是什么?我使用Maven作为构建系统。您认为使用hibernate3 maven插件适合这种情况吗


谢谢你的帮助

我建议不要在生产/QA中使用
hibernate3 maven插件
(带有
hbm2ddl.auto
),因为它可能会产生不想要的/意外的副作用。我想我在某个地方读到过,Hibernate创建者自己实际上建议不要在生产中使用
hbm2ddl.auto

最好只编写自己的SQL修补程序来更改数据库模式(它也会得到更好的优化)


为了跟踪脚本,我们有与软件版本(例如:1.14.1)相对应的目录(在源代码管理中),并且在那里保存了所有SQL修补程序,用于为特定版本运行更改(我们确保使它们可以重新运行而不会产生副作用)。部署1.14.1时,我们运行软件版本所需的脚本(我们还有一个脚本,可以自动运行所有所需的脚本,但通常是手动完成的)。

我建议不要使用
hibernate3 maven插件
(使用
hbm2ddl.auto
)在生产/质量保证中,因为它可能有不期望的/意外的副作用。我想我在某个地方读到过,Hibernate创建者自己实际上建议不要在生产中使用
hbm2ddl.auto

最好只编写自己的SQL修补程序来更改数据库模式(它也会得到更好的优化)


为了跟踪脚本,我们有与软件版本(例如:1.14.1)相对应的目录(在源代码管理中),并且在那里保存了所有SQL修补程序,用于为特定版本运行更改(我们确保使它们可以重新运行而不会产生副作用)。在部署1.14.1时,我们运行软件版本所需的脚本(我们还有一个脚本,可以自动运行所有所需的脚本,但通常是手动完成的)。

问题是我从对象视图设计了数据模型。我的意思是,我首先创建实体及其关系(在对象模型中),然后使用hbm2ddl创建模式。因此,在我的例子中,我需要使用hbm2ddl创建新的SQL模式。你建议哪种方式?对不起,我不太清楚。您仍然可以使用hibernate3 maven插件导出SQL模式,只需在运行QA/Production之前手动检查即可。我建议不要直接在生产数据库上使用
hbm2ddl.auto
(将更新答案)。谢谢!但我的问题更大,我想更多地了解其他人每天使用的方法。我的意思是他们是如何工作的,他们使用哪种过程。。。另外,如果您有一些资源来解释如何在企业中工作的技巧/最佳实践。好的,我理解,我会用我在项目中所做的工作来更新答案。开发人员将在签入脚本之前测试脚本,DBA将在运行脚本之前对其进行检查。如果您可以信任人们编写代码,那么您就可以信任他们编写sql脚本。我认为运行手动检查的脚本比让工具更新数据库更危险。也就是说,我知道有些地方在生产中使用了
hbm2dll.auto
,但还没有出现任何问题。根据我自己的经验和我从其他人那里收集到的信息,它并不总是像预期的那样工作(非空值未更改、触发器已禁用等)。问题是我从对象视图设计了数据模型。我的意思是,我首先创建实体及其关系(在对象模型中),然后使用hbm2ddl创建模式。因此,在我的例子中,我需要使用hbm2ddl创建新的SQL模式。你建议哪种方式?对不起,我不太清楚。您仍然可以使用hibernate3 maven插件导出SQL模式,只需在运行QA/Production之前手动检查即可。我建议不要直接在生产数据库上使用
hbm2ddl.auto
(将更新答案)。谢谢!但我的问题更大,我想更多地了解其他人每天使用的方法。我的意思是他们是如何工作的,他们使用哪种过程。。。另外,如果您有一些资源来解释如何在企业中工作的技巧/最佳实践。好的,我理解,我会用我在项目中所做的工作来更新答案。开发人员将在签入脚本之前测试脚本,DBA将在运行脚本之前对其进行检查。如果您可以信任人们编写代码,那么您就可以信任他们编写sql脚本。我认为运行手动检查的脚本要比让工具更新数据库危险得多。也就是说,我知道有些地方在生产中使用了
hbm2dll.auto
,但还没有出现任何问题。根据我自己的经验以及我从其他人那里收集到的信息,它并不总是像预期的那样工作(非空值未更改、触发器已禁用等)。