2011-12-08 26 views

Respuesta

19

Obtenga el Connection del DataSource bean.

Se puede acceder a la fuente de datos mediante el uso de la inyección de dependencia de Primavera para inyectarlo en el bean, o accediendo ApplicationContext estáticamente:

DataSource ds = (DataSource)ApplicationContextProvider.getApplicationContext().getBean("dataSource"); 
Connection c = ds.getConnection(); 
+8

Pero no devuelve la conexión actual sino una nueva conexión. Necesito devolver la conexión actual. La situación es: Creé la conexión y la necesito para usar en otro lugar pero en la misma conexión – vlcik

+0

¿Cómo se creó la conexión? Por favor, pegue la fuente. – socha23

+0

Creé una conexión usando una instancia de Spring JDBC template – vlcik

13

Uso DataSourceUtils.getConnection().

Devuelve la conexión asociada a la transacción actual, si corresponde.

+0

No uso transacción. Su fragmento de código anterior crea otra instancia de conexión y es un problema para mí. Necesito la instancia actual que creé antes – vlcik

+0

@ user330847: Si es así, ¿qué quiere decir con "conexión actual" y qué es exactamente lo que quiere lograr? – axtavt

+0

Quiero llamar al procedimiento almacenado de Oracle. Creé correctamente la conexión por creando una instancia de plantilla JDBC. Después de eso, ejecuto la declaración invocable y me devuelve Conjunto de resultados. Ahora, me gustaría analizar el conjunto de resultados y asignarlo al objeto de valor . Y en este proceso de análisis necesito obtener la conexión que fue creada en el comienzo. Esta conexión es 'conexión actual'. No sé cómo para obtener esta conexión actual – vlcik

9

Solo una información: Estoy usando Spring JDBC Template, que contiene el objeto de conexión actual para mí, que se puede recibir de la siguiente manera.

Connection con; 
con = getJdbcTemplate().getDataSource().getConnection(); 
+0

Para aquellos que pueden no saber, una 'JdbcTemplate' se puede inyectar fácilmente como campo:' @Awired JdbcTemplate jdbcTemplate; ' – acdcjunior

Cuestiones relacionadas