微服务架构之Spring Boot(四十五)

2022-05-23 14:27:12 浏览数 (1)

30.6使用jOOQ

Java面向对象查询(jOOQ)是Data Geekery的一个流行产品, 它从您的数据库生成Java代码,并允许您通过其流畅的API构建类型安全的SQL

查询。商业版和开源版都可以与Spring Boot一起使用。

30.6.1代码生成

要使用jOOQ类型安全查询,您需要从数据库模式生成Java类。您可以按照jOOQ用户手册中的说明进行 操作。如果您使

用 jooq-codegen-maven 插件并且还使用 spring-boot-starter-parent “父POM”,则可以安全地省略插件的 <version> 标记。您还可以

使用Spring引导定义的版本变量(例如 h2.version )来声明插件的数据库依赖性。以下清单显示了一个示例:

<plugin>

<groupId>org.jooq</groupId>

<artifactId>jooq-codegen-maven</artifactId>

<executions>

...

</executions>

<dependencies>

<dependency>

<groupId>com.h2database</groupId>

<artifactId>h2</artifactId>

<version>${h2.version}</version>

</dependency>

</dependencies>

<configuration>

<jdbc>

<driver>org.h2.Driver</driver>

<url>jdbc:h2:~/yourdatabase</url>

</jdbc>

<generator>

...

</generator>

</configuration>

</plugin>

30.6.2使用DSLContext

jOOQ提供的流畅API通过 org.jooq.DSLContext 接口启动。Spring Boot将 DSLContext 自动配置为Spring Bean并将其连接到您的应

用 DataSource 。要使用 DSLContext ,您可以 @Autowire ,如下例所示:

@Component

public class JooqExample implements CommandLineRunner {

private final DSLContext create;

@Autowired

public JooqExample(DSLContext dslContext) {

this.create = dslContext;

}

}

jOOQ手册倾向于使用名为 create 的变量来保存 DSLContext 。

然后,您可以使用 DSLContext 构建查询,如以下示例所示:

public List<GregorianCalendar> authorsBornAfter1980() {

return this.create.selectFrom(AUTHOR)

.where(AUTHOR.DATE_OF_BIRTH.greaterThan(new GregorianCalendar(1980, 0, 1)))

.fetch(AUTHOR.DATE_OF_BIRTH);

}

30.6.3 jOOQ SQL方言

除非已配置 spring.jooq.sql-dialect 属性,否则Spring Boot将确定用于数据源的SQL方言。如果Spring Boot无法检测到方言,则使

用 DEFAULT 。

Spring Boot只能自动配置开源版本的jOOQ支持的方言。

30.6.4自定义jOOQ

通过定义自己的 @Bean 定义可以实现更高级的自定义,这些定义在创建jOOQ Configuration 时使用。您可以为以下jOOQ类型定义beans:

ConnectionProvider

ExecutorProvider

TransactionProvider

RecordMapperProvider

RecordUnmapperProvider

RecordListenerProvider

ExecuteListenerProvider

VisitListenerProvider

TransactionListenerProvider

如果您想完全控制jOOQ配置,也可以创建自己的 org.jooq.Configuration @Bean 。

31.使用NoSQL Technologies

Spring数据提供了其他项目,可帮助您访问各种NoSQL技术,包括:MongoDB, Neo4J, Elasticsearch, Solr, Redis, Gemfire,

Cassandra, Couchbase和 LDAP。Spring Boot为Redis,MongoDB,Neo4j,Elasticsearch,Solr Cassandra,Couchbase和LDAP提供自

动配置。您可以使用其他项目,但必须自己配置它们。

0 人点赞