(Quick Reference)

3.3.4 Proxy de origen de datos preparado para transacción - Reference Documentation

Authors: Graeme Rocher, Peter Ledbrook, Marc Palmer, Jeff Brown, Luke Daley, Burt Beckwith

Version: null

3.3.4 Proxy de origen de datos preparado para transacción

The actual dataSource bean is wrapped in a transaction-aware proxy so you will be given the connection that's being used by the current transaction or Hibernate Session if one is active.

If this were not the case, then retrieving a connection from the dataSource would be a new connection, and you wouldn't be able to see changes that haven't been committed yet (assuming you have a sensible transaction isolation setting, e.g. READ_COMMITTED or better).

The "real" unproxied dataSource is still available to you if you need access to it; its bean name is dataSourceUnproxied.

You can access this bean like any other Spring bean, i.e. using dependency injection:

El dataSource bean está envuelto en un proxy preparado para la transacción por lo que se le dará la conexión que se utiliza en la transacción actual o la Session Hibernate si está activa.

Si esto no fuera el caso, entonces recuperar una conexión desde el datasource sería una nueva conexión, y no sería capaz de ver los cambios que no hayan sido comprometidos aún (suponiendo que tiene un aislamiento de transacción razonable, por ejemplo, READ_COMMITTED o mejor).

El dataSource real fuera del proxy sigue estando disponible si necesita tener acceso a él; su nombre de bean es dataSourceUnproxied.

Se puede acceder a este bean como a cualquier otro bean de Spring, es decir, mediante inyección de dependencias:

class MyService {

def dataSourceUnproxied … }

or by pulling it from the ApplicationContext:

o solicitándolo al ApplicationContext:

def dataSourceUnproxied = ctx.dataSourceUnproxied