2012-07-16 32 views
17

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

Entiendo que estos son dos tipos diferentes de conexiones de bases de datos utilizando diferentes principios (JDBC es una conexión directa de db, JNDI es una configuración de grupo de conexiones de base de datos en el servidor de aplicaciones). ¿Pero hay otras ventajas y desventajas generales de JDBC/JNDI que podrían ser más importantes que la velocidad de operación? Si es así, ¿qué son?

+0

¿Por JNDI quiere decir definir un origen de datos en el servidor? – Tomer

+0

@ ftom2: sí, eso es lo que quise decir: configurar el origen de datos JNDI en el servidor de aplicaciones – altern

+0

No hay ninguna relación en términos de rendimiento entre JNDI y JDBC, porque JNDI devuelve algunas propiedades que ayudan al desarrollador de aplicaciones o al servidor de aplicaciones a obtener una conexión de base de datos utilizando JDBC ; API de bajo nivel para la conectividad de la base de datos. – Max

Respuesta

21

apuesto lo que quieren decir es eligiendo entre

  1. creación de fuente de datos o una conexión JDBC manualmente en su aplicación, o
  2. configuración de la fuente de datos en el contenedor, y la aplicación buscar el origen de datos a través de JNDI

Si es el caso, siempre se pega a 2 si es posible.

Las principales razones para la elección nunca son las diferencias de rendimiento. La razón para apegarse a 2 es, en la mayoría de los casos, que necesita 2 para obtener características más avanzadas del contenedor, por ejemplo, transacción distribuida.

30

Una conexión de base de datos siempre usa JDBC. Con JNDI, 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 intercambiables.

+0

+1 - Exactamente ;-) –

2

No está del todo claro en la pregunta.

JNDI no es un tipo de conexión de base de datos. Puede usar JNDI para buscar un DataSource, que es una fábrica de conexiones. 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 información de directorio, frente a usar JNDI contra un repositorio LDAP?

2

El beneficio de la velocidad real 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 bases de datos y luego use la tecnología adecuada para llegar al grupo. Según la implementación, 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 el grupo se configure y administre en el contenedor web en lugar de dentro de su aplicación.

1

Como se menciona 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 es generalmente la forma preferida porque de esa manera usted tiene el servidor administrando sus grupos de conexiones de bases de datos.

1

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 previamente registrada. Si el origen de datos especifica una implementación de agrupación de conexiones durante el registro JNDI (como se describe en la sección Creating a Data Source Using the DataDirect Connection Pool Manager), la aplicación cliente se beneficia de conexiones más rápidas a través de la agrupación de conexiones.

1

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

3

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 conjunto de conexiones es un entorno en el servidor donde JNDI y la base de datos están encapsuladas para la conectividad de Type4.

JDBC: API Java que permite a los programas Java ejecutar sentencias 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.

+1

De nuevo; Le he notificado varias veces sobre el requisito de divulgación cuando lo conecto a su propio sitio web, pero no lo ha hecho repetidamente. –

+0

Ok. Lo corregiré. – Ruthreshwar

Cuestiones relacionadas