Hola:
Antes de nada, habría que aclarar si se arranca tu aplicación una sola vez y la usan 50 usuarios (una especie de servidor en el que cada usuario tiene su interfaz de usuario), o si cada usuario va a arrancar su propia aplicación desde su PC y hace sus propias consultas.
Si los 50 usuarios van a hacer esporádicamente consultas a la base de datos o cada uno tiene su propia aplciación, tu método puede ser bueno. Abrir y cerrar una conexión por cada consulta es un proceso costoso, pero puede ser asumible si las consultas son de vez en cuando y no un proceso continuo.
Si las consultas van a ser más frecuentes pero no es fácil que sean simultáneas (cada usuario tiene su propia aplciación, por lo que realmente cada usuario tiene su propia conexión), entonces puedes abrir una única conexión al principio del programa y mantenerla abierta. Necesitas hacer un
syncrhonize(connection) {
código de consulta
}
para evitar que dos usuarios usen simultáneamente la misma conexión. Esto hace que un usuario tenga que esperar a que el anterior termine, pero estamos suponiendo que esa circunstancia no es probable.
Si los 50 usuarios se conectan a la vez en una misma aplicación y se lian a hacer consultas simultáneamente, lo más eficiente es usar un pool de conexiones. Tendrías que bajarte y usar algo como apache commons dbcp, que tiene pool de conexiones ya hecho
http://commons.apache.org/dbcp/configuration.html
Más info y algún ejemplo, aquí
http://chuidiang.org/content/pool-de-conexiones
Se bueno.