Действительно, ODBC / JDBC - это библиотеки, которые помогают сделать интерфейс вызывающего стандарта между поставщиками, но вы правы, что каждая соответствующая СУБД имеет свой собственный вариант SQL. ODBC / JDBC не помогает абстрагировать синтаксис SQL.
Одним из решений для удаления буквенного SQL из кода приложения является реализация запросов в хранимых процедурах, которые находятся в каждом бэкэнде базы данных, а затем использование ODBC / JDBC для вызова хранимых процедур. Вы можете определить хранимые процедуры с похожими именами и интерфейсом вызова для каждой разновидности используемой вами СУБД. Но имейте в виду, что язык хранимых процедур также является переменным от одного поставщика к другому.
Другое решение заключается в использовании технологии «объектно-реляционного отображения», такой как Hibernate для Java или NHibernate для .NET. Эти технологии могут сделать работу с базами данных более «объектно-ориентированной» и во многих случаях избавить вас от написания буквального SQL.
Но большинство инструментов ORM имеют тенденцию фокусироваться на очень простых запросах. Если ваш запрос вообще сложен (например, с использованием GROUP BY
или JOIN
), использование инструмента ORM на сложнее , чем с использованием литерального SQL.
См. Также " Хорошее ORM для решений C ++? "
Если SQL вас так сильно беспокоит, вы, вероятно, не будете рады использовать RDBMS вообще. Например, некоторые программисты не видят значение Правил нормализации. Если это верно для вас, вы можете посмотреть на новые технологии для нереляционных хранилищ данных, в том числе: