Практически Groovy: Программирование JDBC с помощью Groovy (исходники)Источник: IBM developerWorks Россия Эндрю Гловер, президент компании, Stelligent Incorporated
Сделайте еще один шаг в освоении Groovy: Эндрю Гловер покажет, как использовать GroovySql для построения простого приложения для формирования отчетов. Объединяя в себе замыкания и итераторы, GroovySql облегчает программирование Java Database Connectivity (JDBC), перенося часть работы по управлению ресурсами на саму среду Groovy. В предыдущих выпусках серии Практически Groovy мы открыли несколько очень интересных возможностей Groovy. Из первой статьи вы узнали, как применять Groovy для более простого и быстрого функционального тестирования обычного кода Java. Во второй статье вы увидели выразительные возможности, привносимые Groovy в сборки Ant. В этот раз вы узнаете еще об одном способе практического использования Groovy - а именно о том, как применить его для быстрого создания приложения, формирующего отчеты на базе SQL. Обычно языки сценариев великолепно подходят для быстрого создания приложений, формирующих отчеты, но создание таких приложений с помощью Groovy явно выделяется даже на их фоне. Легкий синтаксис Groovy может частично компенсировать многословие JDBC в языке Java, но наиболее сильный эффект дают замыкания (closures), которые элегантно переносят ответственность за обработку с клиента на среду, где удержать вес значительно проще. В статье этого месяца я дам краткий обзор возможностей GroovySql и покажу, как начать работу с ними, создав простое приложение для формирования отчетов. Чтобы вынести максимум пользы из обсуждения, вы должны быть знакомы с программированием JDBC на платформе Java. Кроме того, вы, вероятно, захотите освежить в памяти введение в замыкания в Groovy, опубликованное в прошлом месяце, поскольку здесь они играют важную роль. Однако наиболее важным понятием в этом месяце будет итерирование, поскольку итераторы играют важную роль в расширении JDBC с помощью Groovy. Поэтому я начну с обзора методов итераторов в Groovy. Введение в итераторыИтерирование является одной из наиболее часто используемых и полезных тактик в ситуациях программирования всех типов. Итератор - это программная конструкция, которая позволяет обеспечить быстрый доступ к элементам данных, хранящимся в любой коллекции или контейнере, по одному за раз. Groovy расширяет понятие итераторов языка Java, делая их неявными и простыми в использовании. В листинге 1 показано, сколько усилий требуется для вывода на печать всех элементов коллекции Листинг 1. Итераторы в обычном коде Java
Из листинга 2 видно, как Groovy упрощает эти действия. Здесь я пропускаю интерфейс
Как вы могли увидеть, в отличие от обычного кода Java, Groovy управляет кодом итерирования, при этом позволяя мне указывать нужный режим работы. Тем самым Groovy аккуратно переносит ответственность за обработку ресурсов с меня на себя. Передача обработки ресурсов Groovy открывает широчайшие возможности. Это делает процесс программирования более простым и, следовательно, более быстрым. Введение в GroovySqlВозможности SQL в Groovy реализованы в изящном интерфейсе API GroovySql. С помощью замыканий и итераторов GroovySql аккуратно переносит управление ресурсами JDBC с вас, разработчика, в среду Groovy. Тем самым программирование JDBC избавляется от громоздкости, и вы можете сконцентрироваться на запросах и их результатах. На всякий случай, если вы забыли, с какими трудностями может быть связано обычное программирование JDBC на Java, я буду счастлив напомнить вам об этом! В листинге 3 вы можете увидеть простой пример программирования JDBC на языке Java. Листинг 3. Программирование JDBC на обычном Java
Блеск. В листинге 3 содержится около 40 строк кода только для просмотра содержимого таблицы! Как вы думаете, сколько строк понадобится при использовании GroovySql? Если вы думаете, что их будет больше 10, вы ошибетесь. Посмотрите, как изящно Groovy позволяет мне сконцентрироваться на задаче - выполнении простого запроса - и управляет нужными ресурсами вместо меня, как видно в листинге 4. Листинг 4. Добро пожаловать в GroovySql!
Неплохо. Используя всего несколько строк, я создал код такой же функции, как и в листинге 3, не выполняя закрытия Выполнение простого запросаВ первой строчке листинга 4 я создал экземпляр класса Можно рассматривать метод Код упрощается еще больше путем отбрасывания из уравнения именованной переменной Листинг 5. Переменная
В этом коде я смог отбросить переменную Выполнение более сложных запросовПредыдущие примеры были достаточно просты, но GroovySql так же хорошо работает при более сложных запросах, манипулирующих данными, например, В листинге 6 вы можете видеть простой запрос Листинг 6. Вставка с помощью GroovySql
В Groovy также реализована измененная версия метода Листинг 7. PreparedStatements с помощью GroovySql
Изменения (update) проходят в основном таким же образом, используя метод Листинг 8. Изменения с помощью GroovySql
Удаление, по существу, выполняется так же, как и вставка, за тем лишь исключением, конечно, другого синтаксиса запроса, как видно из листинга 9. Листинг 9. Удаление с помощью GroovySql
Упрощение работы с даннымиВ любом интерфейсе API или утилите, цель которой состоит в упрощении программирования JDBC, хорошо бы иметь набор мощных функций для работы с данными, и в этом разделе я покажу вам еще три такие функции. Массивы данныхПри всей своей простоте GroovySql поддерживает нотацию типа Однако у типа Листинг 10. Массивы данных в GroovySql
Как вы можете видеть, тип Использование хранимых процедур и отрицательной индексацииХранимые процедуры и отрицательная индексация могут быть важными аспектами работы с данными. GroovySql упрощает вызов хранимых процедур до простого вызова метода Листинг 11. Отрицательная индексация в GroovySql
Как видно из листинга 11, получение последнего элемента результирующего множества выполняется простым указанием индекса -1. При желании я также мог обратиться бы к этому элементу по индексу 2. Это опять простейшие примеры, но они должны помочь вам лучше понять возможности GroovySql. Я закончу урок этого месяца реальным примером, демонстрирующим все описанные ранее возможности. Написание простого приложения для формирования отчетовОбычно приложения, формирующие отчеты, извлекают информацию из базы данных. В обычной бизнес-среде вам может потребоваться написать приложение, формирующее отчеты о текущих продажах через Интернет для команды менеджеров по продажам или отчеты с ежедневными контрольными показателями по производительности отдельных компонентов системы, например, базы данных, для разработчиков. Для нужд нашего простого примера давайте предположим, что вы только что внедрили корпоративное Web-приложение. Конечно же, оно работает безупречно, потому что во время работы над ним вы написали множество функциональных тестов (на Groovy); однако вам нужно создать отчет о состоянии базы данных с целью её настройки. Вы хотите знать, как пользователи работают с приложением, чтобы предупреждать проблемы с производительностью и устранять их. Обычно количество «примочек», которые вы можете добавить в подобное приложение, ограничивается имеющимся временем. Но новые знания о GroovySql помогут вам создать нужное приложение за несколько минут, оставив вам время на дополнительные функции, если вы этого пожелаете. ПодробностиЦелевой базой данных в нашем случае является MySQL, которая удачным образом поддерживает получение информации о состоянии с помощью запроса. Вас интересует следующая информация о состоянии:
Получение этой информации из базы данных MySQL с помощью GroovySql становится крайне простым. Поскольку приложение готовится для команды разработчиков, вы, вероятно, начнете с простого отчета, запускающегося из командной строки, но на следующем шаге вы можете с легкостью преобразовать его в отчет для Web. Сценарий использования для нашего примера отчетности может выглядеть следующим образом:
В листинге 12 представлен конечный результат: приложение, которое создает отчет с нужной статистикой базы данных. Первые строки кода устанавливают соединение с рабочей базой данных, вслед за чем идет ряд запросов Листинг 12. Отчет о состоянии базы данных с помощью GroovySql
Повторение сегодняшнего урокаВ выпуске Практически Groovy за этот месяц вы могли видеть, как GroovySql позволяет упростить программирование JDBC. Этот прекрасный API-интерфейс сочетает замыкания и итераторы с мягким синтаксисом Groovy, позволяя облегчить быструю разработку приложений баз данных на платформе Java. Более того, GroovySql перекладывает работу по управлению ресурсами с разработчика на среду Groovy, позволяя вам сконцентрироваться на более важных проблемах запросов и их результатов. Однако я не требую верить мне на слово. В следующий раз, когда вам придется погружаться в каторгу JDBC, попробуйте вместо этого использовать немного волшебства GroovySql. После этого отправьте мне письмо по электронной почте и расскажите о вашем опыте. В следующем месяце в выпуске Практически Groovy, я подробно расскажу о среде шаблонов Groovy. Как вы увидите, создавать визуальные компоненты приложений с помощью этой умной среды очень просто. |