El concepto de Java DataSource es un concepto que genera dudas entre muchas personas sobre todo personas que no llevan mucho tiempo programando en Java o han llegado ya en tiempos modernos en donde Spring Boot ayuda mucho. En muchas ocaciones me encuentro que la respuesta a ¿Que es un Java DataSource es “una conexión a base de datos”. Lamentablemente no es exactamente eso y en muchas ocasiones genera problemas . Vamos a intentar explicarlo de forma breve .
Java DataSource y sus origenes
Hace ya mucho mucho tiempo en los inicios de la programación en Java no era tan típico disponer de una aplicación Web sino de una aplicación de Escritorio que se conectaba a una base de datos esta aplicación habitualmente estaba desarrollada con Swing , SWT o incluso AWT. Todos entornos de ventanas . Estas aplicaciones necesitaban conectarse a la base de datos y obtener información sobre ella . Para ello usaban un driver JDBC y un Objeto Connection.
Un objeto de Conexión a la base de datos es un objeto “caro” de construir y se encarga de lanzar consultas a la base de datos para insertar datos o devolverlos. Una aplicación de este estilo funciona bastante bien con una conexión viva a la base de datos y la gestiona. El problema de esta solución es cuando introducimos una aplicación web. Las cuales antiguamente se manejaban con Servlets y JSP.
En este caso cada vez que el servlet hacía una conexión a la base de datos y obtenia resultados generaba un HTML y luego descartaba la conexión y la destruia.
Esto es un problema ya que una objeto de conexión es un objeto muy caro de construir y el rendimiento se veía seriamente afectado.
Java Pool de Conexiones
Para evitar este problema las aplicaciones web se rediseñaron para tener un pool de conexiones o Java DataSource . Este pool de conexiones es un conjunto de conexiones que se crean al arrancar el servidor de aplicaciones y están disponibles para cada aplicación durante su ciclo de vida y por lo tanto cada Servlet puede usar una de estas conexiones un rato y luego la devuelve al pool sin destruirla . Es el concepto que habitualmente se conoce en la vida diaria como “alquiler” nosotros alquilamos cosas que usamos un tiempo y luego las devolvemos para que otros las usen.
De esta manera un Servlet puede usar una conexión a la base de datos sin estar destruyendola.
continuamente a este concepto de Pool de Conexiones o Grupo de conexiones se le termino llamando Java DataSource o fuente de datos Java.
Spring Boot DataSource
Esto es lo que habitualmente configuramos cuando estamos hablando de DataSource de Spring Fraemework, se trata de un pool de conexiones que es configurable.
spring.datasource.url=jdbc:mysql://localhost:8889/springjpa spring.datasource.username=root spring.datasource.password=root spring.datasource.driver.class=com.mysql.jdbc.Driver spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect