Java: от слов к делу
На программе ты освоишь навыки работы с БД с использованием jOOQ, технику Dependency Injection на примере Guice, получишь практические знания, необходимые для создания HTTP-серверов и REST API, научишься писать распределенные реактивные приложения на платформе Vert.x и тестировать их при помощи JUnit.
Какие знания нужны
Базовые навыки программирования на Java и SQL, понимание принципов ООП и того, что из себя представляют базы данных и для чего их используют.
Как проходят занятия
Мастер-классы проходят в формате вебинаров, в режиме реального времени (наличие включенной web-камеры обязательно).
Программа состоит из 10 мастер-классов по 4 ак. часа. В конце каждого занятия будет домашнее задание на закрепление пройденных тем.
Как поступить?
Регистрация
Заполни заявку и регистрируйся на курс до 23:55 22-го сентября
Тестирование
Ссылка на тест придет на почту 26-го сентября. Пройди тест до 14:00 28-го сентября
Зачисление
4-го октября студентам, набравшим достаточное количество баллов по тестированию, придет письмо о зачислении
Начало обучения
Обучение начнётся с 5 октября согласно расписанию
Вопросы по обучению
Отборочный тест
Тестирование включает задачи на базовое знание программирования на Java и SQL, понимание принципов ООП и того, что из себя представляют базы данных. Базовые навыки использования ОС. Наличие обширного игрового опыта будет плюсом.
Требования к поступающим
Стать участником программы могут только действительные студенты вузов, магистранты, аспиранты, а также вузовские выпускники 2021-2022 года
Оборудование для обучения
Нагрузка в неделю
4 ак. часа в неделю без учета времени на выполнение домашнего задания
Место проведения
Онлайн по вечерам
Стоимость обучения
Моего вопроса нет
Программа
Создание проекта с использованием Gradle
Проекты, состоящие из нескольких модулей. Структура проекта в Gradle, способ подключения внешних зависимостей и проектных модулей. Сборка готовых к установке на сервер приложений.
Инъекция зависимостей (DI) на примере Guice
Фреймворк Guice в разработке приложений, возможности фреймворка по связыванию классов и созданию фабричных методов обработке аннотаций.
Тестирование при помощи JUnit и Mockito
Изучение программирования, покрывая код юнит- и интеграционными тестами, и приемов замены программного кода в тестовом окружении. Основное API библиотек Junit и Mockito.
Разработка схемы БД
Знакомство с СУБД Postgres. Нормальные формы. Операторы SQL создание таблиц. Миграция БД. Библиотека миграции flyway.
Взаимодействие с БД с помощью JDBC
Программы на JAVA, взаимодействующие с базой данных с использованием механизма JDBC.
Архитектура JDBC, драйверы, подключение к базе, вставка/изменение/удаление данных. Паттерны DTO/DAO.
Типобезопасный SQL с jOOQ
Connection pool, ORM и его альтернативы. Jooq. Программирование на JAVA, с использованием библиотеки jOOQ.
HTTP-сервер на основе Jetty
В рамках занятия познакомимся с устройством HTTP — сервера и рассмотрим основные типы HTTP запросов. Наиболее подробно изучим фреймворк Jetty (реализацию веб-сервера на Java), особое внимание уделив фильтрам, обработчикам и созданию сервлетов. А для закрепления материала напишем простой логин-сервис.
Описание REST API с использованием Jersey, Jackson
В рамках данного занятия представим REST — архитектурный стиль взаимодействия между сервисами — и познакомимся с библиотекой Jersey, позволяющей быстро и просто создавать RESTful сервисы. Отдельно рассмотрим формат обмена данными JSON и фреймворк Jackson, используемые для (де)сериализации данных из JSON в Java-объект и наоборот. В конце занятия переработаем написанный на прошлом занятии логин-сервис с применением полученных навыков.
Vertx. Verticles.
Vertx. Verticles.
Примеры:
JOOQ + Spring Boot: как сгенерировать атрибуты?
Итак, у меня JOOQ, Spring Boot и Maven. Нашёл конфиг на гитхабе JOOQ. Адаптировал. В результате, получился такой:
4.0.0 org.springframework.boot spring-boot-starter-parent 2.2.4.RELEASE ru.example example 0.0.1-SNAPSHOT example Example 11 3.12.4 org.postgresql.Driver jdbc:postgresql://localhost:5432/example example_user example org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-starter-jooq org.jooq jooq org.jooq jooq $ org.springframework.boot spring-boot-starter-web org.flywaydb flyway-core org.jooq jooq-meta $ org.postgresql postgresql runtime org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine org.springframework.boot spring-boot-maven-plugin org.jooq jooq-codegen-maven $ generate-postgres generate-sources generate $ $ $ $ org.jooq.meta.postgres.PostgresDatabase .* --> PUBLIC false true true ru.example.domain target/generated-sources/jooq
Вроде всё как указано в примере: https://github.com/jOOQ/jOOQ/tree/master/jOOQ-examples/jOOQ-spring-boot-example При том, что никаких дополнительных конфигов не указано и что дальше делать, непонятно. По идее, при запуске приложения, плагин должен залезть в директорию ru.example.domain и наплодить в target/generated-sources/jooq атрибуты по сущностям, по которым он будет делать запросы. Вот пример сущности:
public class Profile
Генератор ничего не генерирует. В других примерах, в частности, был настроен какой-то конфиг. На гитхабе JOOQ никакого конфига нет. Подскажите, что ещё нужно сделать для того, чтобы JOOQ таки нагенерировал мне атрибутов? Вполне подойдёт пример на гитхабе, с обязательными атрибутами Spring Boot + JOOQ + Maven.
Использование jOOQ с Spring: генерация кода
jOOQ генерирует код Java из вашей базы данных и позволяет вам создавать безопасные для SQL запросы с помощью своего свободного API.
Первая часть этого руководства описывает, как мы можем сконфигурировать контекст приложения на платформе Spring, использующей jOOQ, но не описывает, как мы можем создавать безопасные для SQL запросы с помощью jOOQ.
Этот пост в блоге приближает нас к решению. Если мы хотим создавать безопасные для базы данных запросы с помощью jOOQ, нам необходимо выполнить реинжиниринг нашей базы данных и создать классы, которые представляют разные таблицы, записи и т. Д. Эти классы являются строительными блоками безопасных типов запросов SQL.
К счастью, jOOQ предоставляет простой способ автоматизации этого процесса . Этот пост описывает, как мы можем создавать необходимые классы с помощью Maven.
Дополнительное чтение:
- Создание файлов конфигурации для конкретного профиля с помощью Maven объясняет, как вы можете создавать различные конфигурации для разных сред с помощью профилей сборки Maven. Пример приложения этого блога настраивается с использованием подхода, описанного в этом посте.
- Использование jOOQ с Spring: Configuration является первой частью этого учебного руководства и описывает, что вы можете настроить контекст приложения Spring, которое использует jOOQ. Вы понимаете этот пост в блоге, не читая первую часть этого руководства, но если вы действительно хотите использовать jOOQ в приложении на базе Spring, я рекомендую вам прочитать этот пост.
Генерация кода с Maven
Наш процесс сборки разделен на три важных этапа, которые описаны ниже:
- Прочитайте конфигурацию базы данных из файла конфигурации конкретного профиля . Мы хотим использовать один и тот же файл конфигурации для нашего приложения и нашего сценария сборки, поскольку это помогает нам избежать дублирования. Нам нужны детали подключения к базе данных, когда мы обновляем схему базы данных и генерируем код из нашей базы данных.
- Обновите схему базы данных, если это необходимо . Поскольку мы хотим генерировать код из нашей базы данных, мы должны убедиться, что его схема обновлена до начала генерации кода.
- Генерация кода из базы данных . На этом этапе считываются метаданные из настроенной базы данных и создаются классы, которые используются для написания безопасных типов запросов к базе данных с помощью jOOQ.
Давайте продолжим и узнаем, как мы можем настроить эти фазы в нашем файле pom.xml .
Чтение свойств из файла свойств профиля
Мы можем прочитать свойства из файла свойств профиля, используя плагин Properties Maven . Этот плагин читает содержимое файла свойств и гарантирует, что мы можем использовать его свойства в нашем файле pom.xml .
Мы можем настроить этот плагин, выполнив следующие действия:
- Добавьте объявление плагина в раздел плагинов файла pom.xml .
- Создайте выполнение, которое запускает цель read-project-properties на этапе инициализации жизненного цикла Maven.
- Убедитесь, что свойства считываются из файла конфигурации профиля (profile / $ /config.properties ).
Конфигурация плагина Properties Maven выглядит следующим образом:
Java Blog
jOOQ Object Oriented Querying (jOOQ) — это популярный продукт от Data Geekery, который генерирует Java-код из вашей базы данных и позволяет создавать безопасные для типов SQL-запросы через его свободно распространяемый API. Как коммерческие, так и открытые версии могут быть использованы с Spring Boot.
Генерация кода
Чтобы использовать типобезопасные запросы jOOQ, вам нужно сгенерировать классы Java из схемы базы данных. Вы можете следовать инструкциям в руководстве пользователя jOOQ. Если вы используете плагин jooq-codegen-maven и также используете “parent POM” spring-boot-starter-parent, вы можете спокойно пропустить тег плагина. Вы также можете использовать переменные версии, определенные Spring Boot (например, h2.version), чтобы объявить зависимость базы данных плагина. Следующий листинг показывает пример:
org.jooq jooq-codegen-maven . com.h2database h2 $org.h2.Driver jdbc:h2:~/yourdatabase .
- Spring Boot: работа с SQL базами данных
- Spring Boot: JPA и Spring Data JPA
- Spring Boot: Spring Data JPA репозитории

- Получить ссылку
- Электронная почта
- Другие приложения
Комментарии
Отправить комментарий
Популярные сообщения из этого блога
Методы класса Object в Java

Класс Object является корнем иерархии классов. У каждого класса есть Object как суперкласс. Все объекты, включая массивы, реализуют методы этого класса. Методы класса Object Метод getClass() public final Class getClass() Возвращает класс времени исполнения (runtime class) этого Object. Возвращенный объект Class — это объект, который заблокирован статическими синхронизированными методами представленного класса. Фактический тип результата — Class где |X| заменяется статическим типом выражения, для которого вызывается getClass. Например, в этом фрагменте кода не требуется приведение: Number n = 0; Class c = n.getClass(); Метод getClass() возвращает: Объект Class, представляющий класс времени исполнения (runtime class) этого объекта. Метод hashCode public int hashCode() Возвращает значение хэш-кода для объекта. Этот метод поддерживается для использования хэш-таблиц, таких как те, что предоставляются HashMap. Основной контракт метода hashCo?>
Как получить текущий timestamp в Java

Чтобы получить текущий timestamp в Java : package main; import java.sql.Timestamp; public class Main < public static void main(String[] args)< Timestamp timestamp = new Timestamp(System.currentTimeMillis()); System.out.println(timestamp); >> Вывод: 2019-10-03 10:09:21.61 Вот еще два более подробных примера как получить текущий timestamp в Java: 1. java.sql.Timestamp Есть два метода получить текущий java.sql.Timestamp package main; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Date; public class Main < private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss"); public static void main(String[] args) < // Метод 1 Timestamp timestamp = new Timestamp(System.currentTimeMillis()); System.out.println(timestamp); // Метод 2 - через Date Date date = new Date(); System.out.println(new Timestamp(date.getTime()
Основные опции JVM для повышения производительности и отладки

Если вы являетесь Java-разработчиком или администратором Java приложения, вам поможет в работе знание того, что означают опции JVM, а также их важность и как они влияют на ваше приложение. Обзор параметров JVM Если говорить о параметрах JVM, то есть три типа параметров, которые вы можете включить в JVM: стандартные, нестандартные и расширенные параметры. Если вы используете расширенную опцию, вы всегда используете опцию с -XX. Точно так же, если вы применяете нестандартную опцию, вы используете -X. Стандартные опции ничего не добавляют к опции. Какие параметры JVM используются вашим приложением? Если приложение работает в Linux, вы можете использовать ps -ef | grep java для идентификации процесса Java и просмотра параметров JVM, напечатанных как аргументы процесса. Если в системе выполняется более одного Java-процесса, вам может потребоваться использовать ключевое слово, уникальное для вашего Java-приложения. Если ваш аргумент слишком длинный, попробуйте использовать ps