【问题标题】:How to use separate databases for production and testing in an eclipse RCP app如何在 Eclipse RCP 应用程序中使用单独的数据库进行生产和测试
【发布时间】:2011-04-12 06:40:57
【问题描述】:

我正在编写一个 Eclipse RCP 应用程序,我正在尝试使用单独的数据库进行测试,以防止损坏我的生产数据库。在测试数据库的设置过程中,我需要执行一个 sql 文件来填充测试数据。

有没有办法告诉应用程序使用不同的数据库并执行特定的 sql 脚本(可能通过启动属性或片段或其他方式)?

谢谢

【问题讨论】:

    标签: java mysql eclipse rcp equinox


    【解决方案1】:

    听起来像是 OSGi 服务的完美用例。

    【讨论】:

    • 听起来很有趣。你能详细说明一下吗?
    • 开发一个连接到数据库的包,进行一些初始化(例如,必要时执行一些 SQL),然后在 javax.sql.DataSource 接口下作为服务发布。现在,您的应用程序包可以访问数据库,而无需关心它是生产还是测试。要切换,请部署不同版本的数据库连接器捆绑包(或使用标准配置管理服务对其进行配置)。
    【解决方案2】:

    我现在发现并正在使用一种不同的方法,恕我直言,更像是 RCP-ish。我定义了一个片段来覆盖数据库道具并替换主机插件中的虚拟查询文件。然后我定义了两个特性——一个用于使用片段的测试,一个用于不带片段的生产特性。然后在不同的产品中使用这些功能——一种用于生产,一种用于测试。工作正常

    【讨论】:

      【解决方案3】:

      您的应用程序将接受诸如 Eclipse 可执行文件之类的参数。您可以在应用程序的 ini 文件中指定参数(在 Eclipse 中为 eclipse.ini,您可以为您的应用程序重命名),格式为

      -vmargs
      -Dkey=value
      

      这些值可以使用System.getProperty读取

      在某些平台上,您也应该能够从命令行接受这些参数。

      【讨论】:

      • 这个也可以,甚至比配置文件更简单,一个syou dac在产品中定义参数。我唯一不喜欢它的是审美问题,见仁见智。我想要一个更“密封”的解决方案,仅依赖 RCP 技术。一个有效的答案虽然
      【解决方案4】:

      对于 RCP,我通常使用某种类型的属性文件。在其中我会指定诸如要使用的数据库和启动脚本(如有必要)之类的东西。随着您的应用程序的增长,这种方法将非常值得。

      【讨论】:

      • 你的持久化包在启动时会读取这个属性文件,我想?这会起作用,但必须编辑或切换用于生产/测试启动的道具文件,这是我试图避免的。我想做的是生成单独的启动或产品文件以“一劳永逸”地指定道具或相应的片段
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 2011-08-14
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 2014-08-13
      • 1970-01-01
      相关资源
      最近更新 更多