如何在Spring交易中获取连接?
想象一下这段代码:
foo() {
Connection conn = ...;
}
foo()
已从具有注释 的方法调用。如何获取当前的 JDBC 连接?请注意,它位于bean中(因此它可以具有字段),但不能具有参数(因此我无法从某个位置传入连接)。@Transactional
foo()
@Autowired
foo()
[编辑]我正在使用jOOQ,它需要数据源或连接。我的问题:我不知道配置了哪个事务管理器。它可以是任何东西;Java EE,基于DataSource,通过JNDI获取数据源。我的代码不是应用程序,而是库。我需要吞下别人放在我盘子里的东西。同样,我无法请求休眠会话工厂,因为使用我的应用程序可能不使用休眠。
但我知道其他代码,如Spring Hibernate集成,可以以某种方式从事务管理器获取当前连接。我的意思是,Hibernate不支持Spring的事务管理器,所以胶水代码必须使Spring API适应Hibernate的期望。我需要做同样的事情,但我无法弄清楚它是如何工作的。
[编辑2]我知道有一个活动的事务(即Spring在某个地方有一个连接实例,或者至少有一个可以创建一个事务管理器),但我的方法不是@Transactional。我需要调用一个作为参数的构造函数。我该怎么办?java.sql.Connection