jooq_将jOOQ与具有UWS-jOOQ插件的Grails集成

jooq

介绍

Grails是旨在提高开发效率的Web框架。 主要功能之一是以域为中心的数据库架构生成。 用Grails构建的应用程序能够在启动之前更新现有模式。 为此,Grails在更高级的情况下使用内置的域映射器或迁移。 UWS-jOOQ Grails插件的目标是将jOOQ集成到现有的Grails生命周期中,以便利用jOOQ的功能而不损害Grails提供的功能。

uws-180 本文是德国jOOQ集成合作伙伴 UWS Software Service(UWS)为您提供的系列文章的一部分。 UWS专门从事定制软件开发,应用程序现代化和外包,并且特别关注Java Enterprise生态系统。

为什么我应该将jOOQ与Grails一起使用?

在企业应用程序中,我们经常会遇到Hibernate性能问题,缺乏对某些语句的支持或Hibernate模型造成的太多麻烦。 Hibernate的查询语言HQL通常不够复杂,无法满足某些要求。 这迫使我们使用普通SQL,这很不错,并且有助于解决特定的业务问题。 但是,在涉及大量人员并且产品不断发展的大型项目中,类型安全性非常宝贵,但是在使用普通SQL时会被丢弃。 这就是jOOQ框架出类拔萃的时刻,并且UWS-jOOQ Grails-Plugin进入了游戏。

如何将jOOQ集成到Grails中?

我们试图使用Grails内置的依赖项解析将jOOQ集成到Grails中。 只需将以下行添加到BuildConfig.groovy的plugins部分:

compile ':uws-jooq:0.1.1'

将插件配置添加到您的Config.groovy:

jooq.dataSource = ['dataSource']
jooq.xmlConfigDir = "src/resources/jooq/"
jooq.generatedClassOutputDirectory = 'src/java'
jooq.generatedClassPackageName.dataSource = 'ie.uws.example'

如本例所示,该插件允许配置要使用的数据源以及一些键路径。 最后,您还希望在示例集成项目中查看Config.groovy自定义版本

接下来的jOOQ需要一个xml配置文件 ,该文件可以由插件使用以下命令生成。 该插件将使用您现有的数据源及其配置来生成jOOQ配置:

grails jooq-generate-config

现在,所有配置均已准备就绪,现在是时候进入jOOQ的主要功能之一了,它是类型安全SQL。 使用以下命令,jOOQ将生成您在编写SQL时要使用的Java类,因为它们将为您提供基于编译器的自动完成功能:

grails jooq-init

现在一切就绪,假设您要通过一个控制器中的jOOQ将新记录插入数据库中。 就这么简单:

class ExampleController {
  JooqService jooqService

  def insert() {
    DSLContext dsl = jooqService.dataSource	
    BookRecord record = dsl.newRecord(Tables.BOOK)
    record.author = "John"
    record.name = "Uws"
    record.version = 1
    record.store()
  }
}

jOOQ与Grails的集成如何在后台进行?

在上面的示例中,您注意到JooqService是Grails依赖注入的。 在Grails中使用jOOQ时,JooqService是您的切入点,因为它能够选择您的数据源并为您提供jOOQ DSL上下文。 当您有多个数据源时,它还允许您仅通过提供其名称来选择其他数据源:

DSLContext dsl = jooqService.dataSource_custom

请注意,自动补全功能不会告诉您dataSource_custom字段的存在,但JooqService会为您处理。

在版本0.1中,我们添加了JooqService,但必须根据您的数据库架构生成DSLContext。 因此,每次更改Grails域模型时都必须执行jooq-init命令,因为该命令将编译代码并执行所有迁移,以便在最新的数据库架构上生成最新的Java类。 由于这种方法,甚至可以从内存中的H2数据库生成结构,该数据库在应用程序关闭后将立即不可用。

在Grails上使用jOOQ的最佳实践

整合遗留数据库

您可能会遇到必须使用Grails框架连接到某些旧数据库的情况。 当然,这是可行的,但是您必须首先创建正确的Hibernate映射,或者(幸运的是)让Hibernate为您生成正确的映射。 使用此插件,您可以让jOOQ生成其Java类,并准备使用完全类型安全的DSL与数据库进行通信。

让数据库架构更改破坏代码

当您知道某些东西会早点破裂时,它是最珍贵的礼物之一。 在Grails中使用jOOQ会在编译期间发生。 当执行jooq-init ,将使用最新的数据库架构编译应用程序并重新生成Java类。 如果生成的类发生更改,则会通知您代码不再能够编译。 您可以修复您SQL语句,并确保您的应用程序在运行时不会中断。

将生成的类保留在版本控制系统中

我们建议您将jOOQ生成的类以及其余的应用程序源代码检入VCS。 当您使用jOOQ类与数据库进行通信时,编译必须具有已定义的类。 您是否使用其他方法? 请告诉我们!

路线图

我们计划进一步简化集成,并将jooq-init附加到常规grails编译过程中。 另外,我们还希望使我们的插件更易于滥用(请参见jooqService部分 ),并增加了不仅在服务或控制器中而且在普通Java类中使用jOOQ的可能性。

对UWS-jOOQ Grails-Plugin的贡献

该软件根据Apache许可证2.0版分发。 我们希望免费提供此软件,并为人们提供服务
他们整合了jOOQ和Grails。 如果您对此项目感兴趣,请随时提交问题或将请求拉到该项目的git 仓库

进一步阅读

以下链接提供有关UWS-jOOQ Grails-Plugin的其他信息:

有关UWS或jOOQ的常规信息可以在这里找到:

翻译自: https://www.javacodegeeks.com/2015/03/integrating-jooq-with-grails-featuring-the-uws-jooq-plugin.html

jooq

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值