спринг пекции. Spring для начинающих
Скачать 2.11 Mb.
|
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 – поле не должно быть пустым и не должно быть заполнено только пробелами |