jooQ spring boot多个架构(读写分割)

时间:2017-04-06 12:39:21

标签: java sql spring-boot jooq

我想在春季启动时使用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

但是我现在如何更改代码。

1 个答案:

答案 0 :(得分:0)

来自您的评论:

  

我想将所有写入查询路由到master&amp;我对奴隶的所有阅读查询。

我不太确定write = master,read = slave之间的这种难以区分是个好主意。有时,您可能需要在相同的事务边界内读取主服务器(即读回未提交的数据),如果将读取查询发送到从服务器将产生错误的结果。

因此,实现此路由的最佳位置是具有单独的DataSource实例并相应地将它们注入到jOOQ中。然后,您将明确地分离服务层中的主服务器和从服务器,对于jOOQ透明地分离。

当然,您可以使用jOOQ ExecuteListener并根据查询类型(ExecuteContext.type())为jOOQ提供正确的JDBC Connection来实现您的原始要求,但是,我认为这很快就会破裂。