Что происходит быстрее: JDBC или JNDI?

У меня есть два варианта настройки подключения к базе данных приложения - один использует JDBC, другой использует JNDI. Какой будет лучший вариант с точки зрения того, насколько быстро эти типы соединений работают с базой данных.

Я понимаю, что это два разных типа подключений к базе данных, использующих разные принципы (JDBC - это прямое соединение db, JNDI - это конфигурация пула соединений с базой данных на стороне сервера приложений). Но есть ли другие общие плюсы и минусы JDBC/JNDI, которые могут быть важнее операционной? Если да, то каковы они?

Ответы

Ответ 1

Готов поспорить, что вы имеете в виду выбор из

  • создание источника данных или подключение jdbc вручную в приложении или
  • настроить источник данных в контейнере, а приложение искать источник данных через JNDI

Если это так, всегда придерживайтесь 2, если это возможно.

Основными причинами выбора никогда не являются различия в производительности. Причиной прилипания к 2 в большинстве случаев является то, что вам нужно 2 для получения более расширенных функций из контейнера, например распределенной транзакции.

Ответ 2

В базе данных всегда используется JDBC. С JNDI вы регистрируете источник данных в службе каталогов, который можно найти по его имени. Таким образом, JDBC и JNDI полностью различны и не взаимозаменяемы.

Ответ 3

Это то, что я нашел о JNDI и JDBC.

JNDI: Это технология, которая работает как телефонный справочник, который используется для поиска имени на сервере и источника данных удаленно.

JNDI создает пул соединений. Пул соединений - это среда на сервере, где JNDI и база данных инкапсулированы для подключения типа 4.

JDBC: Java API, который позволяет программам Java выполнять SQL-запросы. Это позволяет программам Java взаимодействовать с любой SQL-совместимой базой данных.

JDBC похож на ODBC, но разработан специально для программ Java, тогда как ODBC не зависит от языка.

JDBC был разработан Sun Microsystems. JNDI работает быстрее и эффективнее.

Ответ 4

Не совсем ясно.

JNDI не является типом подключения к базе данных. Вы можете использовать JNDI для поиска DataSource, который является factory для соединений. DataSource является частью JDBC API, поэтому JNDI работает с JDBC в отличие от альтернатив здесь.

Говорите ли вы об использовании JDBC для базы данных для информации о каталоге, а также об использовании JNDI в репозитории LDAP?

Ответ 5

Реальное преимущество в скорости связано с возможностью повторного использования подключений к базе данных.

Следовательно, вам нужно использовать подход, который обеспечивает объединение пулов базы данных, а затем использовать соответствующую технологию для доступа к пулу. В зависимости от реализации это может быть либо JDBC (если драйвер поддерживает его сам), либо JNDI, либо что-то совершенно другое.

Если ваше приложение запускается внутри веб-контейнера, обычно используется JNDI, чтобы позволить пул настраиваться и управляться в веб-контейнере, а не внутри вашего приложения.

Ответ 6

Как упоминалось в предыдущих ответах, использование Datasource аналогично использованию JDBC с точки зрения технологии.

Тем не менее, использование источника данных обычно является предпочтительным способом, потому что таким образом у вас есть сервер, управляющий пулами соединений с БД.

Ответ 7

Используется ли объединение пулов не влияет на код приложения. Он не требует каких-либо изменений кода для приложения, поскольку приложение выполняет поиск по имени JNDI ранее зарегистрированного источника данных. Если источник данных указывает реализацию объединения пула во время регистрации JNDI (как описано в разделе Создание источника данных с помощью диспетчера пулов соединений DataDirect), клиент преимущества приложения от более быстрых соединений через объединение пулов.

Ответ 8

Вопрос бессмыслен. Быстрее в чем? Нечего сравнивать. JDBC - это универсальный интерфейс для реляционных баз данных. JNDI - это универсальный интерфейс для систем именования. Сильная вероятность состоит в том, что эффективность либо зависит от 99% от целевой системы связи. В любом случае реляционные базы данных и системы именования выполняют совершенно разные потребности, которые в значительной степени несопоставимы. Обычно JNDI используется для получения соединения, тогда JDBC используется для работы с этим соединением.