我试图弄清楚当在已经使用Hibernate的Spring Boot应用程序中使用Jooq 3.17事务语义。我阅读了Jooq文档:https://www.jooq.org/doc/latest/manual/sql-execution/transaction-management/,我认为这些是我的相关部分:
在Java/SQL中处理事务的方法主要有五种:
- 您可以直接在数据库中发出特定于供应商的COMMIT、ROLLBACK和其他语句。
- 您可以在JDBC驱动程序上调用JDBC的Connection.commit()、Connection.rollback()和其他方法,或者在R2DBC驱动程序上使用等效的方法。
- 您可以使用第三方事务管理库,如SpringTX。。
- 您可以从容器中使用符合JTA的JavaEE事务管理器。
- 您使用jOOQ的事务API。
默认情况下,jOOQ附带org.jOOQ.impl.DefaultTransactionProvider,它使用JDBC java.sql.Savepoint实现嵌套事务。但是,您可以实现自己的org.jOOQ.TransactionProvider,并将其提供给Configuration以覆盖jOOQ的默认行为。这里可以看到使用Spring的DataSourceTransactionManager的简单示例实现:
- 这是否意味着如果我在Spring Boot+Hibernate应用程序中使用Jooq,我需要实现我自己版本的示例
SpringTransactionProvider
?或者我被要点4覆盖了——也许Hibernate提供了JTA-compliant Java EE transaction manager
- 是否有我可以打开的Jooq日志记录,当Jooq识别事务开始和停止时,它会显示给我?类似这样的事情:除了Jooq之外,如何在Hibernate中记录DB事务的开始和完成