У меня есть приложение, размещенное на jboss. используйте драйвер jdbc для Oracle для подключения к базе данных Oracle 10.2g. Может ли кто-нибудь указать, что происходит при установке сеанса.
Просто пытаюсь понять внутреннюю работу JDBC / ODBC.
Любая помощь приветствуется.
Во-первых, JDBC и ODBC несовместимы. JDBC был ответом Java на ODBC, и они занимают ту же нишу, но вы не можете подключиться к источнику данных ODBC с помощью JDBC и наоборот. Теперь в Java ЕСТЬ мост jdbc-odbc, но это взлом совместимости, а не собственный соединитель (перевод будет JDBC-> ODBC -> (Целевая база данных), а не JDBC -> (Целевая база данных))
ODBC - это просто стандартизованный интерфейс для доступа к данным из разных баз данных. Вы устанавливаете драйвер ODBC для (любой базы данных) на свой компьютер, затем создаете источник данных ODBC, а затем можете подключиться к который datasource через odbc вместо того, чтобы настраивать собственный драйвер для исходной базы данных. Или, если база данных поддерживает ODBC, вы можете подключиться к ней напрямую, импортировав драйвер.
Преимущество заключается в том, что вы можете написать весь свой код так, чтобы он был совместим с odbc, и он будет работать только с небольшими изменениями, независимо от реального типа базы данных.
Негативом является снижение производительности и случайное странное поведение, поскольку odbc не может точно преобразовать некоторые действия, специфичные для базы данных. Поддержка варьируется. Если вы используете ODBC для подключения к какой-либо устаревшей базе данных, у вас может быть много работы, но если вы используете его для подключения к базе данных доступа, тогда он будет работать безупречно.
Процесс, который происходит при подключении, относительно прост. Вы отправляете свой «стандартизированный» запрос, драйвер JDBC или ODBC переводит его в родную структуру, к которой вы пытаетесь получить доступ, а затем отправляет запрос. Если база данных что-то возвращает, процесс отменяется.
Если у вас возникли проблемы, я бы проверил драйвер, который вы используете. Если вы импортируете плохой драйвер с помощью java, ничего не будет работать правильно. Первое, что вам нужно сделать, это зарегистрировать ошибку. Если вы используете источник данных ODBC, вы можете просто включить вход в свойствах (обратитесь к документации драйвера, чтобы узнать правильные настройки; они различаются).
Если вы используете JDBC, вам, вероятно, придется самостоятельно ловить и регистрировать SQLException.
Прежде всего, ODBC и JDBC - это совершенно разные API (хотя и с одной и той же целью, а именно для взаимодействия с базой данных).
Что касается внутренней работы JDBC:
Грубо говоря, драйвер JDBC откроет соединение с базой данных, которую вы хотите использовать, и передаст ваши запросы для выполнения, а затем отправит обратно любые результаты. Как именно это происходит, зависит от конкретного используемого вами драйвера JDBC (драйвер специфичен для каждой СУБД). Некоторые будут использовать JNI для вызова библиотек, отличных от Java (например, «драйвер OCI» для Oracle), другие будут реализовывать полный протокол для взаимодействия с СУБД на Java (например, «тонкий драйвер» Oracle, драйвер MySQL).
Если вам нужна более конкретная информация, уточните свой вопрос.
Страницы Википедии о JDBC и ODBC также дают хорошее представление об этом предмете.