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
当hibernate+;是否使用代码生成?_Hibernate_Transformation - Fatal编程技术网

当hibernate+;是否使用代码生成?

当hibernate+;是否使用代码生成?,hibernate,transformation,Hibernate,Transformation,我有一个通过HBM.XML文件(通过Hibernate工具生成的代码和sql dml)定义的现有数据库,我正在寻找一种对现有数据执行数据转换的实用方法。因此,假设如下: 使用单个FK定义原始表;有现有的数据。 修订后的表格定义了两个FK;两个FK可以使用数据库查找通过单个FK确定。完整性约束将不受此新结构的影响。其他一切都不会改变 理想情况下,我希望修改后的表保留原始表名 我为什么要这样做?需求变更迫使我撤销了最初的规范化 为此,我计划做以下工作: 使用修改后的表定义,通过HBM.XML定义新的

我有一个通过HBM.XML文件(通过Hibernate工具生成的代码和sql dml)定义的现有数据库,我正在寻找一种对现有数据执行数据转换的实用方法。因此,假设如下:

使用单个FK定义原始表;有现有的数据。 修订后的表格定义了两个FK;两个FK可以使用数据库查找通过单个FK确定。完整性约束将不受此新结构的影响。其他一切都不会改变

理想情况下,我希望修改后的表保留原始表名

我为什么要这样做?需求变更迫使我撤销了最初的规范化

为此,我计划做以下工作:

  • 使用修改后的表定义,通过HBM.XML定义新的映射。生成Java和数据库定义
  • 编写一个模块,从旧表中读取数据并填充新表。运行此模块
  • 通过SQL DML删除旧表;删除与旧表相关的所有生成代码。删除旧表的HBM.XML文件
  • 将修改后的表的HBM.XML重命名为旧映射的类名。仅运行Java代码生成。直接在数据库中更改修改后的表名
  • /结束

    这个过程很混乱,但我不确定如何在实时系统中执行这些数据转换,特别是当涉及到Hibernate和代码生成时。我主要担心的一点是,为修改后的表生成的索引/约束可能会发生不好的事情


    如果有人能帮我评论我的流程/提出改进建议/向我推荐其他资源,我将不胜感激。某个地方,某个时候,一定有人用生产系统做了这件事,所以我想这只是一个知道去哪里找的问题

    您的过程看起来不错。但我会在步骤1之前添加一个额外的步骤来确保转换是正确的:创建一个表示新模式的数据库视图,并创建.hbm/java类来使用它。确保旧表在应用程序中不可读(通过用户设置)。然后在生产环境中部署应用程序,并在一段时间内检查数据完整性。当一切正常时,您可以继续执行步骤2、3、4