假设我为JOOQ提供了一个自定义ConnectionProvider
,它恰好使用自动提交设置为false的连接池。
实现大致是:
@Override public Connection acquire() throws DataAccessException {
return pool.getConnection();
}
@Override public void release(Connection connection) throws DataAccessException {
connection.commit();
connection.close();
}
我该如何将两个jooq查询包装到一个事务中?
使用DefaultConnectionProvider很容易,因为只有一个连接-但是对于池,我不确定该怎么做。
使用jOOQ 3.4,已添加事务API以通过JDBC,Spring或JTA事务管理器进行抽象。该API可以与Java
8一起使用,例如:
DSL.using(configuration)
.transaction(ctx -> {
DSL.using(ctx)
.update(TABLE)
.set(TABLE.COL, newValue)
.where(...)
.execute();
});
或使用Java 8之前的语法
DSL.using(configuration)
.transaction(new TransactionRunnable() {
@Override
public void run(Configuration ctx) {
DSL.using(ctx)
.update(TABLE)
.set(TABLE.COL, newValue)
.where(...)
.execute();
}
});
这个想法是由lambda表达式(或匿名类)形成事务代码,该代码:
该org.jooq.TransactionProvider
SPI可用于覆盖默认行为,它通过JDBC使用实现嵌套事务Savepoints
。
当前文档显示了使用Spring进行事务处理时的示例:
这个例子本质上归结为使用Spring TransactionAwareDataSourceProxy
<!-- Using Apache DBCP as a connection pooling library.
Replace this with your preferred DataSource implementation -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
init-method="createDataSource" destroy-method="close">
<property name="driverClassName" value="org.h2.Driver" />
<property name="url" value="jdbc:h2:~/maven-test" />
<property name="username" value="sa" />
<property name="password" value="" />
</bean>
<!-- Using Spring JDBC for transaction management -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="transactionAwareDataSource"
class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
<constructor-arg ref="dataSource" />
</bean>
<!-- Bridging Spring JDBC data sources to jOOQ's ConnectionProvider -->
<bean class="org.jooq.impl.DataSourceConnectionProvider"
name="connectionProvider">
<constructor-arg ref="transactionAwareDataSource" />
</bean>
可以从GitHub获得一个运行中的示例:
尽管我个人不建议这样做,但是某些用户已经成功地用Guice替换了Spring
DI的一部分,并与Guice进行了交易。在该用例上,GitHub上还有一个经过集成测试的运行示例:
jOOQ 高效的合并了复杂 SQL、类型安全、源码生成、Active Records、存储过程以及高级数据类型的 Java 类库。 示例代码: // Create a new record and insert it into the databaseTBookRecord book = create.newRecord(T_BOOK);book.setTitle("My first book")
问题内容: 是否有人尝试过将JOOQ与Spring框架一起使用,还是我有新的突破? http://www.jooq.org 问题答案: 是的,有很多人(到目前为止)。jOOQ手册包括一个有关如何开始使用jOOQ,Spring,Spring- TX和BoneCP的教程: http://www.jooq.org/doc/latest/manual/getting-started/tutorials/j
我更改了数据库中的一些表,所以我想生成记录、键、类等。但是每次我这样做时,它总是跳过jooq代码生成。 [INFO]--jooq-codegen-maven:3.11.10:generate(默认cli)@http网关--[INFO]跳过jooq代码生成 为了运行Jooq代码生成,我应该执行哪个mvn cmd?现在我使用: 谢谢
问题内容: 假设我为JOOQ提供了一个自定义,它恰好使用自动提交设置为false的连接池。 实现大致是: 如何将两个jooq查询包装到一个事务中? 使用DefaultConnectionProvider很容易,因为只有一个连接-但是对于池,我不确定该怎么做。 问题答案: jOOQ 3.4交易API 使用jOOQ 3.4,已添加事务API以通过JDBC,Spring或JTA事务管理器进行抽象。该AP
问题内容: jOOQ是否结合PostgreSQL提供对JSR310的支持?特别是,我尝试使用以下类: 我正在存储以下数据类型(根据http://www.postgresql.org/docs/9.1/static/datatype- datetime.html ): : : : : 这些数据类型正确吗? jOOQ是否支持,和之间以及上述四个类之间的转换(双向)? 问题答案: jOOQ路线图 直到j
问题 在代码生成期间,我在配置到自定义POJO的映射时遇到了一些问题。 问题 我已经实现了,但想知道如何注册它以在代码生成阶段使用,或者即使这是可能的? 更多上下文 我喜欢波霍斯 如果有帮助,我将使用DefaultConfiguration对象(一个bean)配置jOOQ: 然后对于代码生成,我在gradle中配置它: 我确信这两种配置之间存在脱节,但我无法从文档中了解如何同步这些配置。理想情况下