Una fuente de datos o DataSource es un nombre que se le da a la conexión establecida con una base de datos desde un servidor . El nombre se usa comúnmente al crear una consulta a la base de datos. El nombre de la fuente de datos (DSN) no necesita ser el mismo que el nombre del archivo de la base de datos. Por ejemplo, un archivo de base de datos llamado friends.mdb podría configurarse con un DSN de school . Entonces, el DSN school se usaría para hacer referencia a la base de datos al realizar una consulta.
Una fábrica para conexiones a la fuente de datos física que representa este objeto DataSource. Como alternativa a la función DriverManager, un objeto DataSource es el medio preferido para obtener una conexión. Un objeto que implementa la interfaz DataSource normalmente se registrará con un servicio de nombres basado en la API de interfaz de nombres y directorios de Java (JNDI).
La interfaz DataSource la implementa un proveedor de controladores. Existen tres tipos de implementaciones:
Un objeto DataSource tiene propiedades que se pueden modificar cuando sea necesario. Por ejemplo, si la fuente de datos se traslada a un servidor diferente, se puede cambiar la propiedad del servidor. La ventaja es que, como las propiedades de la fuente de datos se pueden cambiar, no es necesario cambiar ningún código que acceda a esa fuente de datos.
Un controlador al que se accede a través de un objeto DataSource no se registra a sí mismo en DriverManager. En su lugar, se recupera un objeto DataSource mediante una operación de búsqueda y luego se utiliza para crear un objeto Connection. Con una implementación básica, la conexión obtenida a través de un objeto DataSource es idéntica a una conexión obtenida a través de la función DriverManager.
Un objeto DataSource es la representación de una fuente de datos en el lenguaje de programación Java . En términos básicos, una fuente de datos es una herramienta para almacenar datos. Puede ser tan sofisticada como una base de datos compleja para una gran corporación o tan simple como un archivo con filas y columnas. Una fuente de datos puede residir en un servidor remoto o puede estar en una máquina de escritorio local. Las aplicaciones acceden a una fuente de datos mediante una conexión, y un objeto DataSource puede considerarse como una fábrica de conexiones a la fuente de datos particular que representa la instancia DataSource. La interfaz DataSource proporciona dos métodos para establecer una conexión con una fuente de datos.
El uso de un objeto DataSource es la alternativa preferida al uso de DriverManager para establecer una conexión a una fuente de datos. Son similares en la medida en que la clase DriverManager y la interfaz DataSource tienen métodos para crear una conexión, métodos para obtener y establecer un límite de tiempo de espera para realizar una conexión y métodos para obtener y establecer un flujo para el registro.
Sin embargo, sus diferencias son más significativas que sus similitudes. A diferencia de DriverManager, un objeto DataSource tiene propiedades que identifican y describen la fuente de datos que representa. Además, un objeto DataSource funciona con un servicio de nombres Java Naming and Directory Interface (JNDI) y se puede crear, implementar y administrar por separado de las aplicaciones que lo utilizan. Un proveedor de controladores proporcionará una clase que es una implementación básica de la interfaz DataSource como parte de su producto controlador Java Database Connectivity (JDBC) 2.0 o 3.0. Lo que hace un administrador de sistema para registrar un objeto DataSource con un servicio de nombres JNDI y lo que hace una aplicación para obtener una conexión a una fuente de datos utilizando un objeto DataSource registrado con un servicio de nombres JNDI se describen más adelante en este capítulo.
El hecho de estar registrado en un servicio de nombres JNDI le otorga a un objeto DataSource dos ventajas importantes sobre DriverManager. En primer lugar, una aplicación no necesita codificar de forma rígida la información del controlador, como ocurre con DriverManager. Un programador puede elegir un nombre lógico para la fuente de datos y registrar el nombre lógico en un servicio de nombres JNDI. La aplicación utiliza el nombre lógico y el servicio de nombres JNDI proporcionará el objeto DataSource asociado con el nombre lógico. El objeto DataSource se puede utilizar entonces para crear una conexión con la fuente de datos que representa.
La segunda gran ventaja es que la función DataSource permite a los desarrolladores implementar una clase DataSource para aprovechar funciones como la agrupación de conexiones y las transacciones distribuidas. La agrupación de conexiones puede aumentar el rendimiento de forma espectacular al reutilizar las conexiones en lugar de crear una nueva conexión física cada vez que se solicita una conexión. La capacidad de utilizar transacciones distribuidas permite que una aplicación realice el trabajo pesado de bases de datos de las grandes empresas.
Aunque una aplicación puede utilizar DriverManager o un objeto DataSource para obtener una conexión, utilizar un objeto DataSource ofrece ventajas significativas y es la forma recomendada de establecer una conexión.
Desde 1.4
Desde Java EE 6, una fuente de datos vinculada a JNDI se puede configurar alternativamente de manera declarativa directamente desde la aplicación. [1] [2] Esta alternativa es particularmente útil para aplicaciones autosuficientes o para usar de manera transparente una base de datos integrada. [3] [4]
Una fuente de datos es una representación abstracta de un conjunto de datos en vivo que presenta una API predecible común para que otros objetos interactúen con ella. La naturaleza de los datos, su cantidad, su complejidad y la lógica para devolver los resultados de la consulta influyen en la determinación del tipo de fuente de datos. Para pequeñas cantidades de datos textuales simples, una matriz de JavaScript es una buena opción. Si los datos ocupan poco espacio pero requieren un filtro computacional o transformacional simple antes de mostrarse, una función de JavaScript puede ser el enfoque adecuado. Para conjuntos de datos muy grandes (por ejemplo, una base de datos relacional sólida) o para acceder a un servicio web de terceros, sin duda necesitará aprovechar la potencia de un nodo de script o una fuente de datos XHR.