Sistema Lento

Hola!

Buenas tardes a todos!, bien, mi problema es este, me gustaría que estoy haciendo mal:

1. Estoy haciendo un sistema en java la cual he trabajado de la siguiente manera, abro una sola vez la conexion entonces lo unico que hago es pasar como parametro la conexion a traves de mis clases y metodos, yo creía que todo iba bien pero sorpresa! cuando empecé a hacer pruebas me di cuenta de lo siguiente:
El usuario xx ha hecho una modificacion en algún registro
El usuario zz ya estaba conectado pero no puede ver los cambios hasta que reinicie el sistema, entonces supuse que quizás es porque utilizo solo una conexion, por lo que hice la siguiente prueba:

En cada método que utilizo abro y cierro la conexion, y efectivamente se corrige lo anterior, el usuario zz puede ver al instante lo que ha ingresado o modificado el usuario xx, sin embargo surge otro problema, el sistema como que se pasma, esta lentisimo, no tengo idea de que este sucediendo o que estoy haciendo mal?

Mi duda cual es la mejor manera o manera mas adecuada de manejar las conexiones, es recomendable abrir y cerrar la conexion a la base de datos por cada operacion que se realice? o es mejor abrir solo una conexion? como se solventa el hecho de que al utilizar una sola conexion no se visualizen los cambios hasta que se reinicie

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.

Tienes algún ejemplo de tu

Tienes algún ejemplo de tu código?

Para lo primero parece que solo necesitas ejecutar el método   de otra forma no se escribe nada. Para lo segundo lo más probable es que tengas un cuello de botella, pero es imposible saberlo.

Empieza por utilizar un pool de conexiones, así puedes usar más de una.

Esta es una:

Imagen de Lia

Estoy intentando utilizar transacciones

Si claro pondre un ejemplo:
 

Todos los metodos que utilizo son similares al que tengo arriba, mientras que el metodo que abre la conexion es esta:
 

Que mas necesito colocar para que me pueda explicar bien con esto es suficiente?

Ya veo. Definitivamente

Ya veo. Definitivamente tienes que usar un pool de conexiones. Abrir y cerrar una conexión de base de datos es costoso y en tú código lo haces continuamente.

Un pool de conexiones modifica el comportamiento de tal manera que cuando cierras la conexión la regresa a un pool donde alguien más puede reutilizarla.

Aquí hay un ejemplo:

Otra cosa, estás poniendo autocommit = false por default, es por eso que no tu usuario B no puede ver lo que el usuario A escribió, porque aún no se ha terminado la transacción. Deja que quién pida la conexión sea quién la ponga en autocommit true/false.