Эта глава посвящена JDBC (Java DataBase Connectivity) — набору классов и методов, используемых в языке программирования Java для работы с базами данных. JDBC обеспечивает простые, универсальные и хорошо адаптируемые средства взаимодействия с различными СУБД. Материал этой главы требует некоторого опыта программирования на Java.
Интерфейсы JDBC, разработанные корпорацией Sun, обеспечивают выполнение всех стандартных операций с базами данных SQL, а разработчики PostgreSQL предоставляют конкретную реализацию этих интерфейсов. Реализация производит все взаимодействие с базой данных: подключение, регистрацию, вызов хранимых процедур и т. д. Интерфейсы спроектированы таким образом, что программа, использующая JDBC, может подключиться к любой JDBC-совместимой базе данных без модификации кода. Впрочем, при этом все же необходимо учитывать некоторые обстоятельства.
Во-первых, JDBC не выполняет лексического анализа или проверки синтаксиса SQL на стороне клиента. Команды просто передаются базе данных независимо от их правильности. Таким образом, если код SQL работает в одной СУБД, но не подходит для другой, реализация не будет знать об этом до момента фактической установки соединения и пересылки кода SQL. В настоящее время Sim пытается решить эту проблему. Возможно, соответствующие изменения будут внесены в следующие версии JDBC или с переходом на другой стандарт.
Во-вторых, в реализацию включаются дополнительные классы, специфические для конкретного продукта. Например, в PostgreSQL имеются расширения для геометрических типов данных. Они существуют только в PostgreSQL и не поддерживаются другими фирмами. Если вы используете эти специализированные классы, программа не будет работать в других JDBC-совместимых базах данных, невзирая на следование «стащшрту» JDBC.
Одно из преимуществ драйвера JDBC для PostgreSQL заключается в том, что он является драйвером «четвертого типа». Это означает, что он написан на «чистом» языке Java, что позволяет перенести его куда угодно и использовать на любой платформе с поддержкой TCP/IP, поскольку драйвер подключается только через TCP/IP.