Главная страница

спринг пекции. Spring для начинающих


Скачать 2.11 Mb.
НазваниеSpring для начинающих
Анкорспринг пекции
Дата23.03.2023
Размер2.11 Mb.
Формат файлаpdf
Имя файла102 all-slides.pdf
ТипДокументы
#1009485
страница2 из 3
1   2   3
Advice Типы
• Before – выполняется до метода с основной логикой
• After returning – выполняется только после нормального окончания метода с основной логикой
• After throwing – выполняется после окончания метода с основной логикой только, если было выброшено исключение
• After/ After finally – выполняется после окончания метода с основной логикой
• Around – выполняется до и после метода с основной логикой

Advice @AfterReturning
@AfterReturning Advice выполняется только после нормального окончания метода с основной логикой.
Вызов метода
getBook
Test1 класс метод getBook
UniLibrary класс
AOP
Proxy
Метод для логирования
@AfterReturning
End of method

Advice @AfterReturning
@AfterReturning Advice выполняется только после нормального окончания метода с основной логикой, но до присвоения результата этого метода какой-либо переменной.
Поэтому с помощью @AfterReturning Advice возможно изменять возвращаемый результат метода.

Advice @AfterThrowing
@AfterThrowing Advice выполняется после окончания работы метода, если в нём было выброшено исключение.
Вызов метода
getBook
Test1 класс метод getBook
UniLibrary класс
AOP
Proxy
Метод для логирования
@AfterThrowing
Exception
End of method

Advice @AfterThrowing
@AfterThrowing Advice не влияет на протекание программы при выбрасывании исключения. С помощью @AfterThrowing
Advice можно получить доступ к исключению, которое выбросилось из метода с основной логикой.

Advice @After
@After Advice выполняется после окончания метода с основной логикой вне зависимости от того, завершается ли метод нормально или выбрасывается исключение.
Вызов метода
getBook
Test1 класс метод getBook
UniLibrary класс
AOP
Proxy
Exception
End of method

Advice @After
С помощью @After Advice невозможно:
1) получить доступ к исключению, которое выбросилось из метода с основной логикой;
2) получить доступ к возвращаемому методом результату.

Advice @Around
• @Around Advice выполняется до и после метода с основной логикой.
Вызов метода
getBook
Test1 класс
UniLibrary класс
AOP
Proxy
Метод для логирования
@Around
метод
getBook
Метод для логирования

Advice @Around
С помощью @Around Advice возможно:
1) произвести какие-либо действия до работы target метода;
2) произвести какие-либо действия после работы target метода;
3) получить результат работы target метода/изменить его;
4) предпринять какие-либо действия, если из target метода выбрасывается исключение.

Advice @Around. Работа с исключениями
Используя @Around Advice возможно предпринять следующие действия, если из target метода выбрасывается исключение:
• Ничего не делать
• Обрабатывать исключение
• Пробрасывать исключение дальше

Hibernate
SQL для начинающих: с нуля до сертификата Oracle

Hibernate
Для изучения Hibernate необходимы минимальные знания SQL
• SELECT
• INSERT
• UPDATE
• DELETE

Hibernate
Hibernate – это framework, который используется для сохранения, получения, изменения и удаления Java объектов из Базы Данных.
Java application
Hibernate
Database

Hibernate
Плюсы Hibernate:
• Предоставляет технологию ORM
• Регулирует SQL запросы
• Уменьшает количество кода для написания

Hibernate
ORM (Object-to-Relational Mapping) – это преобразование объекта в строку в таблице и обратное преобразование class Employee {
int id;
String name;
String surname;
String department;
int salary;
OTHER CODE
}
Hibernate employee
• id
• name
• surname
• department
• salary

Hibernate
Java application save
Hibernate
• Сбор данных из полей объекта;
• Написание INSERT выражения для добавления новой строки в таблицу с собранными данными.
Java application get
Hibernate
• Написание SELECT выражения для получения необходимых данных;
• Создание объекта Java класса и присвоение его полям значений, полученных из базы.

Hibernate
Hibernate использует JDBC для работы с базой данных.
Java application
Hibernate
Database
JDBC

Hibernate
CRUD
CREATE - команда INSERT
READ - команда SELECT
UPDATE - команда UPDATE
DELETE - команда DELETE

Hibernate
Подготовка окружения для работы с Hibernate:
• Установка MySQL
• Подключение Java приложения к базе
• Root pwd: springcourse
• Connection: my_connection
• User: bestuser
• Pwd: bestuser
• DB: my_db
• Подключение Hibernate
• MySQL JDBC Driver
• hibernate.cfg.xml

Hibernate
Конфигурировать связь между классом и таблицей можно 2-мя способами:
• С помощью XML файла
• С помощью Java аннотаций

Hibernate
Entity класс – это Java класс, который отображает информацию определённой таблицы в Базе Данных
Entity класс – это POJO класс, в котором мы используем определённые Hibernate аннотации для связи класса с таблицей из базы
POJO (Plain Old Java Object) – класс, удовлетворяющий ряду условий:
private поля, getter-ы и setter-ы, конструктор без аргументов и т.д.

Hibernate
class Employee {
int id;
String name;
String surname;
String department;
int salary;
OTHER CODE
}
Hibernate employees
• id
• name
• surname
• department
• salary

Hibernate
Аннотация @Entity говорит о том, что данный класс будет иметь отображение в базе данных
Аннотация @Table говорит о том, к какой именно таблице мы привязываем класс
Аннотация @Column говорит о том, к какому именно столбцу из таблицы мы привязываем поле класса
Аннотация @Id говорит о том, что в таблице, столбец связанный с данным полем является Primary Key

Hibernate
JPA (Java Persistence API) – это стандартная спецификация, которая описывает систему для управления сохранением Java объектов в таблицы базы данных
Hibernate – самая популярная реализация спецификации JPA
Таким образом JPA описывает правила, а Hibernate реализует их.

SessionFactory
SessionFactory – фабрика по производству сессий.
• SessionFactory читает файл hibernate.cfg.xml
После чего SessionFactory знает, как должны создаваться сессии.
• В Java приложении достаточно создать объект
SessionFactory 1 раз и затем можно его переиспользовать.

Session
Session – это обёртка вокруг подключения к базе с помощью JDBC.
• Session мы получаем с помощью SessionFactory
• Session – это основа для работы с Базой Данных.
Именно с помощью Session мы будем добавлять, получать и делать другие операции с Java Объектами в Базе Данных.
• Жизненный цикл Session обычно не велик. Мы получаем Session, делаем с помощью неё определённые операции и она становится не нужной

Hibernate
Добавление объекта в таблицу

Primary Key
Столбец с Primary Key содержит уникальное значение и не может быть null.
Аннотация @GeneratedValue описывает стратегию по генерации значений для столбца с Primary Key.
GenerationType.AUTO – дефолтный тип. Выбор стратегии будет зависеть от типа базы, с которой мы работаем.
GenerationType.IDENTITY полагается на автоматическое увеличение столбца по правилам, прописанным в БД-х.
GenerationType.SEQUENCE полагается на работу Sequence, созданного в БД-х.
GenerationType.TABLE полагается на значение столбца таблицы БД- х. Цель такой таблицы – поддержка уникальности значений.

@GenerationValue
Пример использования @GenerationValue:

Получение объекта из базы по ID

Получение объектов из базы
Для получения объектов из базы используется HQL
(Hibernate Query Language). HQL очень схож с SQL.

Получение объектов из базы

Update объектов

Delete объектов

Типы отношений таблиц
One-to-One (отношение Один-к-Одному)
School
Director
Employee
Details

Типы отношений таблиц
One-to-Many (отношение Один-ко-Многим)
Department
Employee
Employee
Employee
Many-to-One (отношение Многие-к-Одному)
Employee
Employee
Employee
Department

Типы отношений таблиц
Many-to-Many (отношение Многие-ко-Многим)
Кружок
Кружок
Кружок
Кружок
Ребёнок
Ребёнок
Ребёнок
Ребёнок
Ребёнок

Foreign Key
Foreign Key – это внешний ключ.
• FK используется для создания связи между двумя таблицами
• Обычно FK это столбец, который ссылается на PK столбец другой таблицы
• FK столбец не может содержать информацию, которой нет в столбце, на который он ссылается

Foreign Key

One-to-One
School
Director
Employee
Details

Uni и Bi-directional associations
Uni-directional - это отношения, когда одна сторона о них не знает
Bi-directional - это отношения, когда обе стороны знают друг о друге

One-to-One
Employee
Details

Foreign Key

One-to-One
Аннотация @OneToOne указывает на тип отношений между объектами
Аннотация @JoinColumn указывает на столбец, который осуществляет связь с другим объектом
Cascade операций – это выполнение операции не только для Entity, на котором операция вызывается, но и на связанных с ним Entity

One-to-One
Employee
Details
Bi-directional - это отношения, когда обе стороны знают друг о друге

One-to-One
В Bi-directional отношениях с помощью аннотации
@OneToOne и mappedBy мы показываем Hibernate, где нужно искать связь между классами

Типы отношений таблиц
One-to-Many (отношение Один-ко-Многим)
Department
Employee
Employee
Employee
Many-to-One (отношение Многие-к-Одному)
Employee
Employee
Employee
Department

Foreign Key

Uni-directional One-to-Many
Employee
Department
При использовании связи One-to-Many в аннотации @JoinColumn name будет ссылаться на Foreign Key не из source, а из target таблицы.

Bi-directional One-to-Many
Employee
Department

Loading types
Типы загрузки данных:
• Eager (нетерпеливая) загрузка – при её использовании связанные сущности загружаются сразу вместе с загрузкой основной сущности
• Lazy (ленивая) загрузка – при её использовании связанные сущности НЕ загружаются сразу вместе с загрузкой основной сущности. Связанные сущности загрузятся только при первом обращении к ним

Loading types
В большинстве случаев при большом количестве связанных сущностей целесообразнее использовать
Lazy loading по следующим причинам:
• Lazy загрузка имеет лучший performance по сравнению с Eager загрузкой
• Иногда при загрузке основной сущности, нам просто не нужны связанные с ней сущности. Поэтому их загрузка – это лишняя работа.

Fetch type (Тип выборки)
Типы выборки по умолчанию

Fetch type (Тип выборки)
EAGER loading
LAZY loading

Типы отношений таблиц
Many-to-Many (отношение Многие-ко-Многим)
Кружок
Кружок
Кружок
Кружок
Ребёнок
Ребёнок
Ребёнок
Ребёнок
Ребёнок

Join Table
Join Table – это таблица, которая отображает связь между строками 2-х других таблиц
Столбцы Join Table – это Foreign Key, которые ссылаются на Primary Key связываемых таблиц

Join Table

Join Table
В аннотации @JoinTable:
• Мы прописываем название таблицы, которая выполняет роль Join Table
• В joinColumns мы указываем столбец таблицы Join
Table, который ссылается на Primary Key source таблицы
• В inverseJoinColumns мы указываем столбец таблицы
Join Table, который ссылается на Primary Key target таблицы

Join Table
class Section
class Child

Тренажёрный зал
1. Приседания с максимальным весом
2. Приседания с минимальным весом
3. Подтягивания
4. Упражнения с гантелями
1. Разминка
2. Беговая дорожка
3. Приседания с минимальным весом
4. Приседания с более тяжёлым весом
Ошибки новичка
Советы профи

MVC (Model View Controller)
Model – компонент, отвечающий за данные приложения и за работу с этими данными
View (представление) – компонент, отвечающий за взаимодействие с пользователем. View отображает данные и определяет внешний вид приложения.
Controller – компонент, отвечающий за связь между
View и Model. Именно здесь сосредоточена логика работы приложения (бизнес логика)

Spring MVC
Spring MVC – это фреймворк для создания web приложений на Java, в основе которого лежит шаблон проектирования MVC
Естественно, в Spring MVC мы можем использовать весь основной функционал Spring: IoC, DI

Пример Spring MVC
Бра узер
Front Controller
Имя: Zaur
Фамилия:
Tregulov
День рождения: 18.09.1987
Email: zaurtregulov@gmail.com
Зарегистрироваться
Controller информация
Model
View
Уважаемый Zaur Tregulov,
Ваша почта успешно создана!

Spring MVC
Front Controller также известен под именем
DispatcherServlet. Он является частью Spring.
Controller – центр управления, мозг Spring MVC приложения.
Model – контейнер для хранения данных.

Spring MVC
View – web страница, которую можно создать с помощью html, jsp, Thymeleaf и т.д.
Часто при отображении View использует данные из Model.
JSP – Java Server Page. Представляет собой html код с небольшим добавлением кода Java
JSTL - Java Server Pages Standart Tag Library. Это расширение спецификации JSP.

Spring MVC
Из чего будет состоять Spring MVC приложение:
• Конфигурация Spring
• Описание Spring бинов
• Web страницы

Конфигурация Spring MVC
1. Создаём maven проект, используя maven-archetype-webapp
2. Добавляем зависимости в pom файл
3. Скачиваем Tomcat и связываем его со средой разработки
4. Добавляем папки/пакеты в иерархию классов
5. Конфигурируем web.xml
6. Конфигурируем applicationContext.xml

Пример Spring MVC
Бра узер
Front Controller
Имя: Zaur
Фамилия:
Tregulov
День рождения: 18.09.1987
Email: zaurtregulov@gmail.com
Зарегистрироваться
Controller информация
Model
View
Уважаемый Zaur Tregulov,
Ваша почта успешно создана!

Controller
@Controller – это специализированный @Component
@RequestMapping связывает URL (адрес) с методом контроллера.

Controller
Методы в Controller могут:
• Называться как угодно
• Иметь параметры
• Возвращать не только String

Чтение данных из формы

Чтение данных из формы
Браузер
/askDetails
MyController
/showDetails
MyController

Model
Model – контейнер для хранения данных.
Находясь в Controller, мы можем добавлять данные в Model. И затем эти данные использовать во View.
Controller
Model
Model name: Zaur surname:Tregulov department: IT
salary: 500
name: Zaur
Get Info

Model
Имя атрибута
Значение атрибута
Обращение к атрибуту из View

@RequestParam
При работе с формами, аннотация @RequestParam позволяет нам связывать поле формы с параметром метода из Controller-а

@RequestMapping для Controller
@RequestMapping, указанный для Controller-а связывает URL (адрес) со всеми его методами
/employee/
/employee/askDetails

Ambiguous mapping

Формы Spring MVC
Model
Employee
• name
• surname
• salary

Формы Spring MVC
form:form – основная форма, содержащая в себе другие формы. Другими словами, форма-контейнер
form:input –форма, предназначенная для текста.
Используется всего лишь одна строка

Формы Spring MVC
Во View обращение к значению идёт по имени атрибута и его полю
При работе с формами, аннотация @ModelAttribute а параметре метода Controller-а даёт доступ к конкретному атрибуту Модели

Формы Spring MVC

Формы Spring MVC
form:select – форма, предназначенная для реализации выпадающего списка

Формы Spring MVC

Формы Spring MVC
form:radiobutton – форма, предназначенная для реализации radio button (переключатель)

Формы Spring MVC

Формы Spring MVC
form:checkbox – форма, предназначенная для реализации check box (флажок)
• ul – unordered list
• li – list item

Валидация форм Spring MVC

Hibernate
JPA (Java Persistence API) – это стандартная спецификация, которая описывает систему для управления сохранением Java объектов в таблицы базы данных
Hibernate – самая популярная реализация спецификации JPA
Таким образом JPA описывает правила, а Hibernate реализует их.

Валидация форм Spring MVC
Java Standard Bean Validation API – это спецификация, которая описывает правила валидации
Hibernate Validator – реализация правил, описанных в
Java Standard Bean Validation API

Валидация форм Spring MVC
Controller

Валидация форм Spring MVC
@Size – размер поля должен быть между заданными границами
@NotEmpty – поле не должно быть пустым
@NotBlank – поле не должно быть пустым и не должно быть заполнено только пробелами

Валидация форм Spring MVC
1   2   3


написать администратору сайта