Cerrando conexiones de JPA/Toplink Essentials

Se que para cerrar las conexiones de un entityManager solo debemos invocar:

entityManager.close();

Pero de acuerdo con la documentación, eso desechara el EntityManager junto con todo lo que haya creado.¿ Existe alguna forma de cerrar queries de manera individual sin tener que desechar completamente el EntityManager o cerrar la aplicación? Algo asi como lo que se hace con el jdbc puro con los metodos close()

Gracias por su ayuda

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

para qué?

Por qué quieres cerrar los queries de manera individual? Los abriste de manera individual? No se supone que JPA es una abstracción sobre una base de datos, para que no tengas ya que manejar las conexiones ni cosas de tan bajo nivel? Porque entonces seguramente las está manejando por ti... o en todo caso tal vez tengas un objeto tipo la Session de Hibernate, que utiliza una conexión JDBC y por eso hay que estarla cerrando cuando la dejas de utilizar...

El servidor en donde esta la

El servidor en donde esta la base de datos (Postgresql) tiene un maximo de conexiones permitidas y por ahora no puedo cambiarlo y necesito trabajar dentro de ese limite. El detalle es que de cinco queries que usa mi aplicación solo se necesita reutlizar de manera constante uno solo. El problema es que las conexiones al servidor se quedan abiertas de manera indefinida y solo se cierran una vez que cierro la aplicación. Quiero hallar la forma de cerrar las conexiones que ya no se usan para permitar mas de otros usuarios que si las van a necesitar.

Imagen de ezamudio

pool

No será que tienes un pool de conexiones a la base de datos? Si es así, entonces sólo necesitas configurarlo.

Un pool de conexione como DBCP, c3p0, BoneCP, etc lo que hace es administrar las conexiones a tu servidor DBMS, manteniéndolas abiertas; se presenta como DataSource a los otros componentes de tu app, y cuando le piden una conexión, toma una del pool; cuando el componente cierra la conexión, realmente no se cierra sino que regresa al pool.

Puedes afinar el funcionamiento de tu pool, limitando el máximo de conexiones que puede crear.