JDBC ResultSet и RowSet

Базы данных всё таки о данных, а не о запросах. В JDBC данные, которые возвращают запросы, представлены в виде объектов ResultSet. ResultSet, в свою очередь, жёстко связан со Statement, который его породил и существует только до момента закрытия этого самого Statement  Читать далее JDBC ResultSet и RowSet

Разломбочивание

Project lombok автоматизирует написание одного и того же кода и позволяет сосредоточиться на задаче и при этом писать более простой и понятный код. С другой стороны, первый постулат Пардо напоминает: «Все, что есть хорошего в жизни, либо незаконно, либо аморально, Читать далее Разломбочивание

Конфигурирование lombok

В статье о генерации геттеров и сеттеров я упоминал о конфигурационном файле project lombok. Настало время рассмотреть его подробнее. Конфигурационный файл project lombok имеет фиксированное имя lombok.config и не привязан к какому-либо заранее оговорённому расположению. Действие lombok.config распространяется на каталог, в котором Читать далее Конфигурирование lombok

lombok для классов с кодом

Project lombok в первую очередь был нацелен на облегчение написания entity классов, которые хранят данные, но не обрабатывают их. Для классов содержащих код у project lombok тоже есть вспомогательные аннотации.

@Log @Log вставляет в класс логгер, избавляя разработчика от Читать далее lombok для классов с кодом

Builder в одну строку

Шаблон проектирования Builder, цитирую, «отделяет конструирование сложного объекта от его представления, так что в результате одного и того же процесса конструирования могут получаться разные представления.» На практике это означает, что пользоватся builder обычно удобно, а вот реализовывать его — адов Читать далее Builder в одну строку

equals(), toString() и сущности.

О том, как замечательно project lombok  сам генерирует геттеры/сеттеры и конструкторы, я уже писал. Но у класса Object есть ещё методы и их тоже можно переопределять автоматически. equals() и hashCode() Эти методы глубоко пересечены, поэтому генерируются вдвоём, аннотацией  @EqualsAndHashCode

Параметр exclude указывает, Читать далее equals(), toString() и сущности.

Генерация конструкторов и доступ к полям.

Project lombok генерирует не только геттеры и сеттеры, но и конструкторы и свойства полей класса. Модификаторы полей. В первую очередь избавимся от вечноповторяющихся private  и final. Аннотация @FieldDefaults, применённая на класс, позволяет задать всем поля класса уровень доступа по умолчанию или Читать далее Генерация конструкторов и доступ к полям.

Геттеры и сеттеры в Lombok

Моя самая любимая функциональность проекта lombok — генерация геттеров и сеттеров. Наконец-то java разработчики избавляются от тяжёлого наследия и сбрасывают с себя цепи. Генерируют геттеры и сеттеры аннотации @Getter и @Setter:

Параметром аннотации можно задать уровень доступа к сгенерированному методу. Читать далее Геттеры и сеттеры в Lombok

Hello, lombok!

Project lombok это прекраснейший препроцессор аннотаций, который сильно упрощает код и делает java похожей на современный язык. Подготовка Библиотеку project lombok надо добавить в classpath проекта (ну и JUnit сотоварищи тоже добавим):

Обратите внимание, что артефакт project lombok добавлен Читать далее Hello, lombok!

Java 8 Stream API, часть шестая: собственный поток (на самом деле нет)

Stream API предоставляет очень богатый функционал по обработке наборов данных в функциональном стиле. Но что если у нас есть некий набор тип данных, для которого нет возможности создать Stream стандартным образом? Не пишите свой Stream! Существует буквально куча способов создать Читать далее Java 8 Stream API, часть шестая: собственный поток (на самом деле нет)