Java, Groovy и базы данных
Продолжая осваивать язык Groovy, добрался, наконец, до работы с базами данных. Прежде, чем приводить пример кода, хотелось бы несколько слов сказать о механизме JDBC, делающим работу Java-программиста с базами данных весьма эффективной.

Начнем с идеологии и истории. Что стало почвой для появления Java? Да то, что к началу 90-х в мире программирования накопилось множество полезных концепций (объектно-ориентированное программирование, сетевое программирование, поддержка национальных кодировок, GUI и много чего еще) и никто до создателей Java не удосужился собрать это всё воедино на хорошем профессиональном и коммерческом уровне уровне. Java как раз и стала вместилищем всего прогрессивного, причем с максимальным (по тем временам) уровнем абстракции от технической рутины программирования, такой, например, как выделение памяти и забота об утилизации отработанных объектов. Т.е. программист получал возможность сосредоточиться на предметной области.
Одной из полезных концепций, включенных в состав стандартных пакетов Java, стала работа с реляционными базами данных. Их разновидностей к середине 90-х расплодилось великое множество. Большинство поддерживало язык запросов SQL, уже очень хорошо сформировавшийся и закрепленный стандартом 1992 года. Но если запросы к базам данных выполнялись на едином языке (с вариациями, конечно, но все-таки), то организация файлового пространства, соединение с БД и т.п. вспомогательные операции разнились от провайдера к провайдеру. Чтобы избавиться от головной боли, связанной с этой спецификой, и были разработаны инструменты JDBC (Java Data Base Connectivity).
Суть JDBC в том, что каждый провайдер баз данных, (например, Oracle, PostgreSQL, MySQL, SQLite, Derby и т.п.) разрабатывает некую прослойку, через которую можно подключиться к БД, а далее работать с ней не сильно задумываясь о том, с какой-же разновидностью мы имеем дело. Для этого нужен лишь драйвер, поставляемый в виде jar-архива, и URL, в котором указывается тип базы данных, ее имя, имя пользователя, пароль, ну и изредка другая вспомогательная информация. Пример URL для PostgreSQL:
(пробелы вокруг первого двоеточия не нужны, они препятствуют превращению части кода в смайлик, глюк движка).
И все-таки написание программ для соединения с базами данных посредством JDBC — дело унылое. Требуется, как правило, 1-2 десятка строк, в зависимости от того, насколько надежно мы хотим перехватывать возможные исключения, варьировать типы баз данных, пользователей, пароли и т.п. То есть получается, что Java предлагает недостаточно высокий уровень абстракции для работы с БД. Может для середины 90-х JDBC и был прорывом, но 15 лет спустя хочется чего-то большего.
Большее предлагает язык Groovy, являющийся квинтэссенцией, «вытяжкой» самых-самых полезных вещей из Java, да еще и с лаконичным синтаксисом. Мало того, что в Groovy соединение с любой поддерживающей JDBC базой данных устанавливается одной строкой, так еще и SQL-синтаксис для формирования БД можно включить прямо в скрипт, и это немаловажно! Модульность в программировании — когда отдельные фрагменты кода распределяются по отдельным файлам — это, конечно, великая вещь, но всё хорошо в меру и чрезмерная рассредоточенность плавно перерастает в шизофрению, лекарством от которой и призван быть Groovy.
Вот фрагмент кода, соединяющийся с базой PostgreSQL и формирующий таблицы баз данных. Если в структуре БД что-то хочется изменить — меняем смело SQL внутри тройных кавычек и перезапускаем скрипт без компиляции.
Остается лишь скачать нужный JDBC-драйвер и положить его в каталог
В него можно складывать вообще все библиотеки, которые используются в работе с Groovy, чтобы не заморачиваться с CLASSPATH.

Начнем с идеологии и истории. Что стало почвой для появления Java? Да то, что к началу 90-х в мире программирования накопилось множество полезных концепций (объектно-ориентированное программирование, сетевое программирование, поддержка национальных кодировок, GUI и много чего еще) и никто до создателей Java не удосужился собрать это всё воедино на хорошем профессиональном и коммерческом уровне уровне. Java как раз и стала вместилищем всего прогрессивного, причем с максимальным (по тем временам) уровнем абстракции от технической рутины программирования, такой, например, как выделение памяти и забота об утилизации отработанных объектов. Т.е. программист получал возможность сосредоточиться на предметной области.
Одной из полезных концепций, включенных в состав стандартных пакетов Java, стала работа с реляционными базами данных. Их разновидностей к середине 90-х расплодилось великое множество. Большинство поддерживало язык запросов SQL, уже очень хорошо сформировавшийся и закрепленный стандартом 1992 года. Но если запросы к базам данных выполнялись на едином языке (с вариациями, конечно, но все-таки), то организация файлового пространства, соединение с БД и т.п. вспомогательные операции разнились от провайдера к провайдеру. Чтобы избавиться от головной боли, связанной с этой спецификой, и были разработаны инструменты JDBC (Java Data Base Connectivity).
Суть JDBC в том, что каждый провайдер баз данных, (например, Oracle, PostgreSQL, MySQL, SQLite, Derby и т.п.) разрабатывает некую прослойку, через которую можно подключиться к БД, а далее работать с ней не сильно задумываясь о том, с какой-же разновидностью мы имеем дело. Для этого нужен лишь драйвер, поставляемый в виде jar-архива, и URL, в котором указывается тип базы данных, ее имя, имя пользователя, пароль, ну и изредка другая вспомогательная информация. Пример URL для PostgreSQL:
jdbc : postgresql://localhost/testdb?user=postgres&password=123(пробелы вокруг первого двоеточия не нужны, они препятствуют превращению части кода в смайлик, глюк движка).
И все-таки написание программ для соединения с базами данных посредством JDBC — дело унылое. Требуется, как правило, 1-2 десятка строк, в зависимости от того, насколько надежно мы хотим перехватывать возможные исключения, варьировать типы баз данных, пользователей, пароли и т.п. То есть получается, что Java предлагает недостаточно высокий уровень абстракции для работы с БД. Может для середины 90-х JDBC и был прорывом, но 15 лет спустя хочется чего-то большего.
Большее предлагает язык Groovy, являющийся квинтэссенцией, «вытяжкой» самых-самых полезных вещей из Java, да еще и с лаконичным синтаксисом. Мало того, что в Groovy соединение с любой поддерживающей JDBC базой данных устанавливается одной строкой, так еще и SQL-синтаксис для формирования БД можно включить прямо в скрипт, и это немаловажно! Модульность в программировании — когда отдельные фрагменты кода распределяются по отдельным файлам — это, конечно, великая вещь, но всё хорошо в меру и чрезмерная рассредоточенность плавно перерастает в шизофрению, лекарством от которой и призван быть Groovy.
Вот фрагмент кода, соединяющийся с базой PostgreSQL и формирующий таблицы баз данных. Если в структуре БД что-то хочется изменить — меняем смело SQL внутри тройных кавычек и перезапускаем скрипт без компиляции.
#!/usr/bin/groovy
import groovy.sql.Sql
db = Sql.newInstance('jdbc : postgresql:infotester?user=yababay', '', '', 'org.postgresql.Driver')
db.execute '''
DROP TABLE IF EXISTS RAW_DATA;
CREATE TABLE RAW_DATA (
TS TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
B64 TEXT NOT NULL
);
-- Да всё что угодно, хоть тысячу SQL-строк
-- с красивыми отступами, комментариями, шахматами и поэтессами!
'''Остается лишь скачать нужный JDBC-драйвер и положить его в каталог
~/.groovy/libВ него можно складывать вообще все библиотеки, которые используются в работе с Groovy, чтобы не заморачиваться с CLASSPATH.

Комментарии (3)
RSS свернуть / развернутьИ положить в /LIB — я люблю и уважаю! ( полюбил от С )
Но как представлю сколько надо всю эту прелесть надо настраивать...
Markony
mtaalamu.ru/blog/coding/819.html
Но там, вроде, есть способы и попроще, вплоть до setup.exe-инсталляторов и deb-пакетов.
yababay
Markony
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.