我想在春季启动时使用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>
然后只是自动装配DSLContext
但是我现在如何更改代码。
答案 0 :(得分:0)
来自您的评论:
我想将所有写入查询路由到master&amp;我对奴隶的所有阅读查询。
我不太确定write = master,read = slave之间的这种难以区分是个好主意。有时,您可能需要在相同的事务边界内读取主服务器(即读回未提交的数据),如果将读取查询发送到从服务器将产生错误的结果。
因此,实现此路由的最佳位置是具有单独的DataSource
实例并相应地将它们注入到jOOQ中。然后,您将明确地分离服务层中的主服务器和从服务器,对于jOOQ透明地分离。
当然,您可以使用jOOQ ExecuteListener
并根据查询类型(ExecuteContext.type()
)为jOOQ提供正确的JDBC Connection
来实现您的原始要求,但是,我认为这很快就会破裂。