如何使用JOOQ配置测试和生产数据库和代码

时间:2014-05-09 19:14:59

标签: java sql jooq

我是JOOQ的新手,喜欢学习和使用它。

我正处于我想做一些测试的地步,而不是测试 在“真正的”数据库中,我想使用该数据库的“副本”。

当使用jdbc时,真正需要的是更改数据库名称 在连接数据库时创建语句并使用该名称。

我很快发现我试图写入测试数据库的任何内容 最终进入了生产数据库

在JOOQ文档中,看起来我可以通过一些映射来解决问题。

我添加了一个Settings类,并使用设置获取了DSLContext,如下所示

我的基础数据库名称是'kpi'。

Connection conn = JooqUtil.getConnection("user", "pw", kpitest, hostip, sb);
Settings settings = new Settings()
        .withRenderMapping(new RenderMapping()
                .withSchemata(
                        new MappedSchema().withInput(kpi)
                                .withOutput(kpitest)));
// Add the settings to the DSLContext
if (sb.length() == 0) {
    dsl = DSL.using(conn, SQLDialect.MYSQL, settings);
}

以上导致看到正在使用的testName数据库, 但是对表和字段的访问是使用productionName。

回到文档看起来有一种映射表的方法 但它看起来很多工作。

进一步阅读,我使用schemata

在配置文件中找到了一些设置

我当前的JOOQ配置xml文件包含

<inputSchema>kpi</inputSchema>

看起来我应该把它改成像

这样的东西
<inputSchema></inputSchema>  << maybe drop altogether
<schemata>
    <schema>
        <inputSchema>kpi</inputSchema>
        <outputSchema>kpi</outputSchema>
    </schema>
    <schema>
        <inputSchema>kpi</inputSchema>
        <outputSchema>kpitest</outputSchema>
    </schema>
</schemata>

在阅读手册时,我不确定DEV和PRODUCTION名称是否具有字面意义。

有一个(现实世界)示例,其中有一个生产和测试数据库, 或每个开发人员一个开发数据库,​​以及如何访问表和字段 如果语法有变化但是,对单元类型测试来说,语法的改变很难。

感谢您提供任何指导和示例链接

0 个答案:

没有答案