Записки программиста
Функциональщик ботает Java — работа со сторонними библиотеками и хождение в РСУБД через JDBC
Итак, мы с вами настроили окружение для программирования на Java. Давайте же теперь попробуем что ли написать на ней какую-нибудь несложную программку, посерьезнее, чем Hello World. Например, программу, которая ходит в реляционную базу данных, выполняет какие-то запросы и получает результат.
Но сначала нам предстоит немного донастроить нашу IDE, в качестве которой, напоминаю, была выбрана IntelliJ IDEA. Идем в меню File → Settings → Editor и выбираем там галочку «Change font size (Zoom) with Ctr+Mouse Wheel». Это позволит менять размер шрифта в редакторе кода путем вращения колесика мыши при нажатом Ctr. Отрегулируйте размер шрифта в редакторе по своему вкусу и своим диоптриям.
Там же, в настройках, находим пункт Compiler. Ставим галочки Make project automatically и Compile independent modules in parallel. На наших, пока что небольших, проектах, параллельная фоновая компиляция не даст особого выигрыша, но в будущем это пригодится.
Как и положено нормальным программистам, код нового проекта мы будем держать в репозитории. Сходите на GitHub, BitBucket или чем вы там пользуетесь и заведите новый репозиторий. Лично я предпочитаю Git, но вы можете также выбрать Mercurial, Subversion или CVS. IntelliJ IDEA поддерживает их все. Клонируем куда-нибудь пустой репозиторий. Также можно воспользоваться готовым репозиторием.
Например, у меня есть закрытый репозиторий на BitBucket, где я храню всякие поделки. Свой проект я разместил в подкаталоге этого репозитория.
Создадим новый проект. Как это делать, мы разобрались в предыдущем посте. В качестве groupId указываем ну например me.eax.examples, в качестве artifactId — JDBCExample, выбираем JDK 1.7, в качестве пути указываем путь к созданному ранее репозиторию или подкаталогу в уже существующем репозитории.
Дополнение: Тут я немного накосячил в плане принятых соглашениями о выборе groupId и artifactId. В последнем не принято использовать заглавные буквы. Подробнее об этом можно прочитать здесь.
Далее говорим VCS → Enable Version Control Integration. Если теперь в нижней панели открыть окно Changes, можно заметить, что IDE предлагает закоммитить много ненужных файлов. Похоже, нам понадобится .gitignore. Хороший файл .gitignore был нагуглен тут. Создаем в проекте новый файл с именем .gitignore, на вопрос «добавить ли его в репозиторий?» отвечаем «да», затем пишем:
# Eclipse
.classpath
.project
.settings/
Как и в прошлый раз, создаем пакет, заводим в нем новый класс, добавляем все файлы в репозиторий. В результате должна получиться такая картинка:

Все файлы должны быть зеленые. Нажимаем кнопочку Commit Changes (Ctr+K). Отмечаем галочкой все файлы, вводим Commit Message (ого, спелчекинг!), жмем Commit → Commit and Push. Надо отметить, интеграция с системами контроля версий в IntelliJ IDEA просто отличная. Например, если нажать на вкладку Log (см скриншот), то можно увидеть очень красивый граф коммитов и прочую информацию.
Есть удобный просмоторщик diff’ов и так далее. Советую изучить окно Changes повнимательнее, там много интересного.
Теперь мы готовы к написанию программы. В качестве СУБД воспользуемся PostgreSQL. Хождение в базы данных в мире Java осуществляется через JDBC. Это такой обобщенный интерфейс, аналогичный DBI в мире Perl и HDBC или HDBI в Haskell. JDBC позволяет нам переключаться с одной РСУБД на другую без изменения кода приложения (конечно, если мы не завязались на какие-то специфические возможности некой РСУБД).
Также, например, при появлении новой РСУБД разработчиком достаточно лишь написать драйвер для JDBC, и сразу все джавные ORM’ы и веб-фреймворки начнут работать с этой РСУБД.
JDBC драйвер для PostgreSQL не входит в JDK, нам придется каким-то образом самостоятельно прикрутить его к нашему приложению. Сторонние библиотеки в мире Java распространяются через репозитории — публичные в интернете или частные в локальной сети компании. Мы воспользуемся одним из общедоступных репозиториев.
Идем в File → Settings → Maven → Repositories, выбираем repo.maven.apache.org, жмем Update. Репозиторий большой, получение списка пакетов из него в первый раз займет довольно много времени. К счастью, во второй и последующие разы все будет намного быстрее. Да и производить такое вот обновление требуется не слишком часто. За процессом можно следить в статусбаре внизу IDE.
Открываем файл pom.xml, жмем Alt+Insert, выбираем Dependency, в строке поиска вводим «org.postgresql:postresql», ждем, когда обновится список, затем выбираем org.postgresql:postgresql:9.2-1004-jdbc4. На момент написания этих строк также был доступен пакет 9.3-1101-jdbc41, но у меня он что-то не заработал («SQLException: No suitable driver found»), то ли из-за не той версии JDBC, то ли потому что у меня локально работает PostgreSQL 9.2, не знаю. Справа вверху появится сообщение «Maven projects need to be imported». Нажимаем «Enable Auto-Import» и больше о нем не вспоминаем. В окне Project (Alt+1) в Exteral Libraries теперь можно увидеть импортированную библиотеку. Соответствующий jar’ник будет автоматически загружен в:
~/.m2/repository/org/postgresql/postgresql/9.2-1004-jdbc4
Примечание: Тут мы каким-то образом заранее узнали имя нужного пакета. Искать пакеты можно, например, через mvnrepository.com или search.maven.org. Если провести аналогию с Haskell и Perl, то это своего рода аналоги Hackage и CPAN.
Нам может захотеться изучить документацию (JavaDoc) к драйверу PostgreSQL и, возможно, его исходники. Получить и то и другое можно либо выполнив в терминале, который, кстати, открывается нажатием Alt+F12:
mvn dependency:sources
mvn dependency:resolve -Dclassifier =javadoc
… либо через окно Maven Projects, кнопку для открытия которого можно найти в правой панели. В File → Settings → Maven → Importing можно настроить IntelliJ IDEA так, чтобы она автоматически загружала исходники и/или документацию при добавлении новой зависимости (Automatically download).
Теперь вводим следующий код:
На рисунке ниже результат создания таблицы в базе данных, и вывод информации в таблицу приложения.
На данном этапе, если мы захотим внести строку с идентичными ключами, то наша программа, как говорят «взорвется» — этот момент мы исправим попозже. На этом эксперименты с данной СУБД пока закончим, мы добились поставленной задачи, а именно встроили в программу движок.
И в следующих статьях: перед подключением модели логгера к приложению мы должны рассмотреть способ передачи информации с Proteus через COM-порт , ну и в конце я постараюсь «причесать» всю программу, подстроить под эту модель, если вы забыли то просмотрите под что изначально делался проект. И обязательно опубликую полученный результат. А также наметим последующий план действий в курсе прикладное программирование с нуля. На этом на сегодня и остановимся. Всем пока.
Источник: www.ap-impulse.com