Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Guice-每个事务使用相同连接的多个持久性提供程序_Java_Persistence_Guice_Jooq - Fatal编程技术网

Java Guice-每个事务使用相同连接的多个持久性提供程序

Java Guice-每个事务使用相同连接的多个持久性提供程序,java,persistence,guice,jooq,Java,Persistence,Guice,Jooq,我有两个我喜欢使用的持久性提供者——我自己的JDBC方法DBAccess和jooq DSLContext。DSLContext和MyDBAccess都可以使用连接和一些配置细节创建。我正在尝试将一个项目转换为使用Guice,并希望创建一个能够在一个事务中同时使用这两种工具的DAO,例如 class ThingDAO { final DBAccess dbAccess; final DSLContext dslContext; @Inject ThingDAO(D

我有两个我喜欢使用的持久性提供者——我自己的JDBC方法DBAccess和jooq DSLContext。DSLContext和MyDBAccess都可以使用连接和一些配置细节创建。我正在尝试将一个项目转换为使用Guice,并希望创建一个能够在一个事务中同时使用这两种工具的DAO,例如

class ThingDAO {
    final DBAccess dbAccess;
    final DSLContext dslContext;

    @Inject
    ThingDAO(DBAccess dbAccess, DSLContext dslContext) {
        this.dbAccess = dbAccess;
        this.dslContext = dslContext;
    }

    Thing getThingForId(int id) {
        return dslContext.select().from(OBJECT)....
    }

    void save(Thing t) {
        dbAccess.save(t);
    }

    Stuff joinThingToStuffTableAndGetStuff(Thing t) {
    // the Stuff I get may depend on what has been saved so far, so I need 
    // the dslContext and dbAccess operating on the same connection

        dslContext....
    }
}
然后我就可以按照

@Transactional
doTheThings(int id, int[] data) {
    ThingDAO dao = thingDaoProvider.get();
    Thing t = dao.getThingForId(id);
    t.doTheThings(data);
    dao.save(t);
    Stuff s = dao.joinThingToStuffTableAndGetStuff(t);
    ....
}
我一直在看,这让我觉得我想要一个类似于UnitOfWork的东西,它从我的数据源抓取一个连接,以便提供给DBAccess和DSLContext,但我不确定这是否正确,或者即使是正确的,也不确定如何继续