我想在 Spring Boot 中使用 jooQ。我有主从架构,所以我想将 jooQ 与主从架构一起使用(主用于写入,从用于读取)。
我应该如何进行。现在我使用 pom.xml 来配置 jooQ
<configuration>
<jdbc>
<driver>com.mysql.jdbc.Driver</driver>
<url>${datasource.primary.url}</url>
<user>${datasource.primary.username}</user>
<password>${datasource.primary.password}</password>
</jdbc>
<generator>
<name>org.jooq.util.DefaultGenerator</name>
<database>
<name>org.jooq.util.mysql.MySQLDatabase</name>
<includes>.*</includes>
<excludes/>
<inputSchema>jpa</inputSchema>
</database>
<generate>
<deprecated>false</deprecated>
</generate>
<target>
<packageName>com.gensrc.model</packageName>
<directory>src/main/java</directory>
</target>
</generator>
</configuration>
然后 Autowiring DSLContext
但是我现在如何更改我的代码。
最佳答案
来自您的评论:
I want to route all my write queries to master & all my read queries to slave.
我不太确定 write=master 和 read=slave 之间的这种硬区分是个好主意。有时,您可能需要在相同的事务边界内从主设备读取数据(即读回未提交的数据),在这种情况下,将读取查询发送到从设备会产生错误的结果。
因此,实现此路由的最佳位置是拥有单独的 DataSource
实例,并将它们相应地注入(inject)到 jOOQ 中。然后,您将在服务层中显式地、透明地分离 jOOQ 的主从服务器。
当然,您可以使用 jOOQ ExecuteListener
来实现您最初的要求。并根据查询类型 ( ExecuteContext.type()
) 为 jOOQ 提供正确的 JDBC Connection
,但同样,我认为这很快就会中断。
关于java - jooQ spring boot 多模式(读写分离),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43255491/