[英]JDBI 3 in DropWizard, onDemand reusing connection
试图从文档中找出这种情况:
http://jdbi.org/#_attached_to_handle
说你有
SomeClass dao1 = dbi.onDemand(SomeClass.class)
那么你在另一种方法,其他地方有一些东西:
try ( Handle handle = dbi.open(); ) {
SomeClass dao2 = handle.attach(SomeClass.class);
// What happens here if I use dao1 ?
dao1.insert(...)
dao2.insert(...)
dao2.insert(...)
dao1.insert(...)
}
请注意,在这些情况下它们是相同的类型。
每个调用的插入都会有一个新的连接/事务,还是将它们都分组到一个事务中?
从文档中不清楚。
我的想法是,在下面,两者的行为都相同,并且 dao1 在调用 insert 时将检查是否有正在进行的事务/连接,对于这种类型并使用它。
然而,文档说这对于 onDemand 实例是正确的,但是,这个 dao2 是附加的,而不是像 dao1 那样的 onDemand 。
每个调用的插入都会有一个新的连接/事务,还是将它们都分组到一个事务中?
对dao2
调用将从显式打开的handle
分组到一个事务中。
对dao1
调用将为每个方法调用使用单独的事务(来自Jdbi#onDemand
javadoc: an extension which opens and closes handles (as needed) for individual method calls
)。
如果你想在事务范围内执行来自不同SqlObject
的方法,你有几个选择:
Jdbi#inTransaction
/ Jdbi#useTransaction
:适用于onDemand
/ attach
@Transaction
和@CreateSqlObject
组合,如文档中所示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.