在我开始的一项新工作中,我们有一个Java应用程序来处理核心业务逻辑中的大部分繁重工作,我们还有一个Rails应用程序当然可以处理该服务器的Web界面。这两个都访问相同的数据库。

到目前为止,大部分重点都集中在Java应用程序上,因此,Rails项目中没有迁移。用于更新共享数据库的sql在诸如changes.sql。

之类的文件中进行管理

你可以想象,这使得开发有点困难。

我最初的想法是将Java项目和Rails应用程序的代码库结合起来,因为那里存在依赖关系,并在源代码中管理该SQL文件。但是,我想我会问这里有没有其他人在某种程度上成功解决了这个问题。

有帮助吗?

解决方案

一种方法是使用rails迁移工具,为数据库生成DDL文件,并使用Hibernate更新与特定数据库实体相关的Java对象。您并没有真正说出如何在Java端管理数据库更改或者是否使用ORM,但您当然可以通过一些工作来同步这两者。

或者您可以反过来让Java定义控制Rails端的更改。

我认为成功完成此操作的关键是选择两个平台中的一个作为“主数据库建模器”。并开发将该模型迁移到其他平台的过程。试图允许两者的变化只会引起麻烦。

其他提示

我们有一个类似的项目结构:将java和rails应用程序作为客户端共享数据库。我主张并且支持使用rails迁移机制来处理数据库更改。它需要一些铁路倡导,有些人愿意帮助,但java团队也在编写自己的迁移。

我们在某些情况下使用存储过程和特定于数据库的列类型,因此我们更改了rails environment.rb以使用sql创建测试数据库。

  # Use SQL instead of Active Record's schema dumper when creating the test database.
  # This is necessary if your schema can't be completely dumped by the schema dumper,
  # like if you have constraints or database-specific column types
  config.active_record.schema_format = :sql

从好的方面来说,通过迁移来管理sql会让rails测试和设置干净。缺点是某些迁移文件不是那么漂亮(例如,您无法使用迁移DSL生成存储过程,因此您在迁移中执行这些操作%{blah})。

请记住,让团队保持沟通畅通。我喜欢“封面生产部署:迁移”这一事实。使生产数据库的更新变得简单。

谢谢Steve

在Java方面,他们使用的是Hibernate,但是使用了手动SQL更新过程。

我同意,它应该是一个或另一个。我想的越多,添加另一个应用程序/模块/代码库来管理数据库绝对是错误的想法。

由于

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top