Obteniendo una Conexion a partir de un EntityManager
Hace unos dias cuando estaba realizando unos reportes con la herramienta iReport, me tope con la necesidad que para poder invocar los reportes elaborados era necesario enviar una instancia de un objeto Connection para el metodo que genera el reporte.
Crear una conexion es sencillo pero yo no estaba manejando mi conexion de la manera tradicional pues estaba usando JPA que es la API de persistencia de datos de Java y esta es la que maneja las conexiones y la configuracion de la cadena de conexion se guardda en la unidad de persistencia que es nada mas y nada menos que un XML.
En un principio pense en acceder al XML directamente, pero como sabia que la conexion se maneja a traves del objeto EntityManager decidi averiguar como se hacia y pues la forma fue la siguiente asi de simple:
Crear una conexion es sencillo pero yo no estaba manejando mi conexion de la manera tradicional pues estaba usando JPA que es la API de persistencia de datos de Java y esta es la que maneja las conexiones y la configuracion de la cadena de conexion se guardda en la unidad de persistencia que es nada mas y nada menos que un XML.
En un principio pense en acceder al XML directamente, pero como sabia que la conexion se maneja a traves del objeto EntityManager decidi averiguar como se hacia y pues la forma fue la siguiente asi de simple:
public Connection getConnection() {
EntityManagerFactory emf=Persistence.createEntityManagerFactory("NombreUnidadPersistencia");
EntityManager em=emf.createEntityManager();
return ((oracle.toplink.essentials.ejb.cmp3.EntityManager)em)
.getServerSession()
.getDefaultConnectionPool()
.acquireConnection()
.getConnection();
}
Espero que esto le sirva cuando se tenga la necesidad de obtener una instancia de la conexion que esta utilizando a travez de un EntityManager.
miércoles, enero 28, 2009
Me ha servido de mucho, gracias y adelante...
miércoles, octubre 27, 2010
Hola estimado, me vota null la conexion que puedo estar haciendo mal, saludos
miércoles, abril 20, 2011
Mil Gracias!!! Es justo lo que necesito ya que me encuentro en la misma situación.
La única diferencia es que trabajo con EclipseLink(JPA 2.0) por lo que la cadena "oracle.toplink.essentials.ejb.cmp3.EntityManager" no me sirve... podrías indicarme donde puedo obtener dicha cadena pero aplicada a mi caso? Muchas Gracias