Java Guice-每个事务使用相同连接的多个持久性提供程序
我有两个我喜欢使用的持久性提供者——我自己的JDBC方法DBAccess和jooq DSLContext。DSLContext和MyDBAccess都可以使用连接和一些配置细节创建。我正在尝试将一个项目转换为使用Guice,并希望创建一个能够在一个事务中同时使用这两种工具的DAO,例如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
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,但我不确定这是否正确,或者即使是正确的,也不确定如何继续