2011-02-09 7 views
2

JDBC предоставляет API, который может использоваться для подключения к разным РСУБД или аналогичным хранилищам данных. Но хранилища данных различаются в реализации (например, диалекты SQL).Можно ли использовать JDBC в качестве уровня абстракции для РСУБД?

Возможно ли использовать JDBC таким образом, чтобы мои запросы и утверждения работали на наиболее распространенных РСУБД (например, Oracle, PostgreSQL, SQL Server, MySQL)?

Этот вопрос интересен для меня в двух аспектах: * Common SQL (INSERT, UPDATE, SELECT и т.д.) * Доступ к мета данных (получение информации о таблицах и столбцах)

В настоящее время я экспериментировал с самонастраиваемую структуру персистентности и хотите подключить к ней хранилище данных JDBC. Поэтому, если я напишу адаптер хранилища данных JDBC, было бы неплохо, если бы оно работало на наиболее распространенных РСУБД.

Заранее спасибо

ответ

2

Нет, это невозможно, потому что они служат двум совершенно другим целям.

JDBC является абстракцией протокола связи , тогда как SQL является языком запросов.

Запросы, написанные на SQL, отправляются на сервер с использованием этого протокола связи, и результаты запросов затем возвращаются через этот протокол (независимо от СУБД).

Кажется, что существует размытая линия между протоколом связи и запросами, поскольку API JDBC также указывает вызовы для извлечения метаданных с сервера (или из результата). Но на самом деле водитель может свободно использовать любые транспортные средства, которые считаются подходящими. Это необязательно должно быть SQL-запросом.

5

JDBC является уровень абстракции для RDBMS.

К сожалению, как вы уже узнали в своем вопросе, абстракция просачивается.

Если вы придерживаетесь небольшого подмножества SQL и метаданных, которые являются общими для всех РСУБД, все будет в порядке. Однако на самом деле вы, скорее всего, получите быстро перерасход этих ограничений.

1

JDBC работает как абстракция РСУБДА примерно в ту же степени SQL делает: основные запросы совместимы достаточно, но вы постоянно врезаться требования, которые могут быть реализованы только с помощью конкретного производителя функции:

  • автоинкремента колонки
  • пейджинговой
  • интернационализация
  • т.д.
Смежные вопросы