Что происходит быстрее: 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 используется для работы с этим соединением.