Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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/9/ios/111.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
Java 是否可以使用EJB升级DB模式?_Java_Ejb - Fatal编程技术网

Java 是否可以使用EJB升级DB模式?

Java 是否可以使用EJB升级DB模式?,java,ejb,Java,Ejb,假设我有一个EJB应用程序,它定义了一些实体以及它们之间的关系。我认为可以很容易地从实体创建DB模式。因此,现在应用程序可以正常工作,但过了一段时间后需要更改一些关系,例如,一对一需要变成一对多,我可以升级我的数据库以做到这一点而不丢失旧数据吗 当然可以!你必须做什么完全取决于许多不同的因素:你使用哪种ORM?哪个EJB容器?哪种关系数据库管理系统 通常采用以下步骤: 停止应用程序 备份数据库 编辑数据库架构 取消部署应用程序 使应用程序适应您的新模式。别忘了编辑您的ORM配置 重新部署应用程序

假设我有一个EJB应用程序,它定义了一些实体以及它们之间的关系。我认为可以很容易地从实体创建DB模式。因此,现在应用程序可以正常工作,但过了一段时间后需要更改一些关系,例如,一对一需要变成一对多,我可以升级我的数据库以做到这一点而不丢失旧数据吗

当然可以!你必须做什么完全取决于许多不同的因素:你使用哪种ORM?哪个EJB容器?哪种关系数据库管理系统

通常采用以下步骤:

  • 停止应用程序
  • 备份数据库
  • 编辑数据库架构
  • 取消部署应用程序
  • 使应用程序适应您的新模式。别忘了编辑您的ORM配置
  • 重新部署应用程序
  • 重新启动应用程序

  • 要获得更详细(且有用)的答案,您必须向我们提供更多有关当前情况、您想要实现的目标以及您将要改变的细节。

    当然可以!你必须做什么完全取决于许多不同的因素:你使用哪种ORM?哪个EJB容器?哪种关系数据库管理系统

    通常采用以下步骤:

  • 停止应用程序
  • 备份数据库
  • 编辑数据库架构
  • 取消部署应用程序
  • 使应用程序适应您的新模式。别忘了编辑您的ORM配置
  • 重新部署应用程序
  • 重新启动应用程序

  • 要获得更详细(且有用)的答案,您必须向我们提供更多有关当前情况、您想要实现的目标以及您将要更改的内容的详细信息。

    如果使用Hibernate作为JPA实现,您可以传递Hibernate.hbm2ddl.auto属性。如果您手动更改模式,您应该考虑将其设置为“验证”。此外,您还可以尝试“更新”,它应该在不进行手动更改的情况下处理简单的内容。

    如果使用Hibernate作为JPA实现,您可以传递Hibernate.hbm2ddl.auto属性。如果您手动更改模式,您应该考虑将其设置为“验证”。此外,您还可以尝试“更新”,它可以在不进行手动更改的情况下处理简单的内容。

    这听起来像是让容器从您的实体自动生成模式,这样您就不必亲自创建自己的ORM(为什么不?),如果是这样,Apache项目中有一个漂亮的工具,名为DdlUtils,您可能会发现它很有用

    首先备份旧数据库,然后重新部署更新的应用程序,以生成具有新架构的空数据库。使用DdlUtils,您可以连接到这两个数据库,并让它生成将旧数据库迁移到新模式所需的SQL,从而保留数据


    如果您只是添加或删除表或列,它就像一个符咒。我不知道当你做一些像更改列名这样的事情时,效果如何。在这种情况下,您可能需要手动编辑sql。

    听起来您让容器从您的实体自动生成模式,这样您就不必亲自创建自己的ORM(为什么不呢?),如果是这样,Apache项目中有一个名为DdlUtils的漂亮工具,您可能会发现它很有用

    首先备份旧数据库,然后重新部署更新的应用程序,以生成具有新架构的空数据库。使用DdlUtils,您可以连接到这两个数据库,并让它生成将旧数据库迁移到新模式所需的SQL,从而保留数据

    如果您只是添加或删除表或列,它就像一个符咒。我不知道当你做一些像更改列名这样的事情时,效果如何。在这种情况下,您可能需要手动编辑sql