【问题标题】:what would the jooq equivalent of a DDL view be?DDL 视图的 jooq 等价物是什么?
【发布时间】:2014-01-08 16:35:37
【问题描述】:

我有一个正在运行的应用程序,现在实现为少数视图,以及一些依赖于视图的 jooq 查询

为什么不把整个层移到 jooq 中呢?也就是说,在jooq中实现视图?这样做的聪明方法是什么?以及对性能的影响是什么?

【问题讨论】:

    标签: java sql sql-view jooq


    【解决方案1】:

    jOOQ 中有一个未决的低优先级功能请求,以支持用 jOOQ 编写的视图:

    您已经可以通过扩展 jOOQ 创建等效的数据库视图:

    根据您的数据库,将视图代码从数据库移动到应用程序层确实可能会对性能产生轻微影响,因为数据库无法再收集(命名)视图的统计信息。但是,很少有数据库真正做到这一点,除非您创建物化视图。

    在 Java 中保留使用 jOOQ 编写的视图的优点是:

    • 更容易迁移。您无需编写 DDL 即可在应用的不同版本之间迁移视图
    • 视图的高级 jOOQ 功能应用程序。例如,如果需要,您可以通过 jOOQ 的SQL transformation SPI 转换视图的 SQL。

    【讨论】:

    • 有什么办法可以将它硬塞到 CustomTable 或表类的扩展中?我只想为我的 API 使用者无缝地子集表的内容,但它示意性地需要一个我想保持隐藏的连接。
    • @kylejmcintyre:是的,“自定义查询部分”链接就是我通过CustomTable 执行此操作的意思。它仍然有点冗长,但它会做你想做的事
    • 非常感谢您的回复。我正在尝试扩展 CustomTable,但我不知道将我的自定义 sql 放在哪里,该自定义 sql 对主表的行进行了子集化。文档说要扩展accept(),但它在TableImpl 中被标记为final。我可以扩展 toSQL(),但没有人在听它。我在 3.5.3。我做错了什么?
    猜你喜欢
    • 2019-08-23
    • 2016-06-08
    • 2014-05-08
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多