with secondary property name look jndiname failed data java mysql database jdbc jndi

java - secondary - ¿Qué es más rápido: JDBC o JNDI?



spring datasource jndi name mysql (8)

Apuesto a que lo que quieres decir es elegir entre

  1. creando una conexión de fuente de datos o jdbc manualmente en su aplicación, o
  2. configure la fuente de datos en el contenedor y la aplicación busque la fuente de datos a través de JNDI

Si este es el caso, siempre quédese en 2 si es posible.

Las principales razones para la elección nunca son las diferencias de rendimiento. En la mayoría de los casos, la razón por la cual se apega a 2 es que necesita 2 para obtener funciones más avanzadas del contenedor, por ejemplo, transacciones distribuidas.

Tengo dos opciones para configurar la conexión de la base de datos de mi aplicación: una es usar JDBC, otra es usar JNDI. ¿Cuál será la mejor opción en términos de qué tan rápido funcionan esos tipos de conexión con la base de datos?

Entiendo que son dos tipos diferentes de conexiones de base de datos que utilizan principios diferentes (JDBC es una conexión directa de base de datos, JNDI es una configuración de agrupación de conexiones de base de datos en el lado del servidor de aplicaciones). Pero, ¿hay otros pros y contras generales de JDBC / JNDI que podrían ser más importantes que la velocidad de operación? Si es así, ¿qué son?


Como se mencionó en las respuestas anteriores, usar Datasource es lo mismo que usar JDBC en términos de tecnología.

Sin embargo, el uso de un origen de datos suele ser la forma preferida, porque de esa manera usted tiene el servidor que administra sus grupos de conexiones de base de datos.


El beneficio real de la velocidad proviene de poder reutilizar las conexiones de la base de datos.

Por lo tanto, debe utilizar un enfoque que proporcione la agrupación de conexiones de base de datos y luego usar la tecnología adecuada para llegar a la agrupación. Dependiendo de la implementación, esto puede ser JDBC (si el controlador lo admite) o JNDI o algo completamente diferente.

Si su aplicación se ejecuta dentro de un contenedor web, es común usar JNDI para permitir que la agrupación se configure y administre en el contenedor web en lugar de dentro de su aplicación.


Esto es lo que he encontrado sobre JNDI y JDBC.

JNDI: esta es una tecnología que funciona como un directorio telefónico que se utiliza para buscar el nombre en el servidor y la fuente de datos de forma remota.

JNDI crea un grupo de conexiones. El grupo de conexiones es un entorno en el servidor donde JNDI y la base de datos se encapsularon para la conectividad Type4.

JDBC: una API de Java que permite que los programas Java ejecuten sentencias de SQL. Esto permite que los programas Java interactúen con cualquier base de datos compatible con SQL.

JDBC es similar a ODBC, pero está diseñado específicamente para programas Java, mientras que ODBC es independiente del lenguaje.

JDBC fue desarrollado por Sun Microsystems. JNDI es más rápido y eficiente.


La pregunta no tiene sentido. Más rápido en qué? No hay nada que comparar. JDBC es una interfaz de propósito general para bases de datos relacionales. JNDI es una interfaz de propósito general para los sistemas de nombres. La gran probabilidad es que la eficiencia de cualquiera de las dos dependa del 99% del sistema objetivo con el que se está comunicando. En cualquier caso, las bases de datos relacionales y los sistemas de nombres satisfacen necesidades completamente diferentes que en gran medida no son comparables. Generalmente, JNDI se usa para obtener una conexión, luego JDBC se usa para operar con esa conexión.


No está totalmente claro en la pregunta.

JNDI no es un tipo de conexión de base de datos. Puede utilizar JNDI para buscar un DataSource, que es una fábrica de conexiones. Sin embargo, el DataSource es parte de la API de JDBC, por lo que JNDI funciona con JDBC en lugar de ser alternativas aquí.

¿Está hablando de usar JDBC contra una base de datos para obtener información del directorio, en lugar de usar JNDI contra un repositorio LDAP?


Si se usa la agrupación de conexiones no afecta el código de la aplicación. No requiere ningún cambio de código en la aplicación porque la aplicación realiza una búsqueda en un nombre JNDI de una fuente de datos registrada previamente. Si la fuente de datos especifica una implementación de agrupación de conexiones durante el registro JNDI (como se describe en la sección Creación de una fuente de datos mediante el Administrador de agrupaciones de conexiones de DataDirect ), la aplicación cliente se beneficia de las conexiones más rápidas a través de la agrupación de conexiones.


Una conexión de base de datos siempre utiliza JDBC. Con JNDI usted registra una fuente de datos en un servicio de directorio que puede buscarse por su nombre. Por lo tanto, JDBC y JNDI son completamente diferentes y no son intercambiables.