Объектно-ориентированное программирование. Лекция 10

Содержание

Слайд 2

План Конфигурация приложения Spring MVC + Hibernate Отображение списка работников Аннотация @Service Добавление работника

План

Конфигурация приложения Spring MVC + Hibernate
Отображение списка работников
Аннотация @Service
Добавление работника

Слайд 3

Конфигурация приложения Spring MVC + Hibernate Прежде всего необходимо добавить зависимость

Конфигурация приложения Spring MVC + Hibernate

Прежде всего необходимо добавить зависимость от

hibernate
https://mvnrepository.com/artifact/org.hibernate/hibernate-core

org.hibernate
hibernate-core
5.6.1.Final

Слайд 4

Конфигурация приложения Spring MVC + Hibernate Далее необходимо добавить mysql connector https://mvnrepository.com/artifact/mysql/mysql-connector-java mysql mysql-connector-java 8.0.27

Конфигурация приложения Spring MVC + Hibernate

Далее необходимо добавить mysql connector
https://mvnrepository.com/artifact/mysql/mysql-connector-java

mysql

mysql-connector-java
8.0.27

Слайд 5

Конфигурация приложения Spring MVC + Hibernate Также нам потребудется c3p0 https://mvnrepository.com/artifact/com.mchange/c3p0 com.mchange c3p0 0.9.5.2

Конфигурация приложения Spring MVC + Hibernate

Также нам потребудется c3p0
https://mvnrepository.com/artifact/com.mchange/c3p0

com.mchange
c3p0

0.9.5.2

Слайд 6

Конфигурация приложения Spring MVC + Hibernate Spring ORM https://mvnrepository.com/artifact/org.springframework/spring-orm org.springframework spring-orm 5.3.12

Конфигурация приложения Spring MVC + Hibernate

Spring ORM
https://mvnrepository.com/artifact/org.springframework/spring-orm

org.springframework
spring-orm
5.3.12

Слайд 7

Конфигурация приложения Spring MVC + Hibernate Добавим некоторые настройки в файл applicationContext

Конфигурация приложения Spring MVC + Hibernate

Добавим некоторые настройки в файл applicationContext

Слайд 8

Конфигурация приложения Spring MVC + Hibernate Что такое c3p0? c3p0 —

Конфигурация приложения Spring MVC + Hibernate

Что такое c3p0?
c3p0 — ещё одна

библиотека для создания пулов соединений. От HikariCP её отличает встроенная поддержка кэширования запросов, которая позволяет автоматически переиспользовать prepared statements, увеличивая тем самым производительность.
Пул соединений с базой данных это набор заранее открытых соединений с базой данных используемый для предоставления соединения в тот момент, когда оно требуется. Пулы соединений используются для повышения производительности при работе с базами данных.
Слайд 9

Конфигурация приложения Spring MVC + Hibernate Далее необходимо создать бин sessionFactory

Конфигурация приложения Spring MVC + Hibernate

Далее необходимо создать бин sessionFactory и

указать, где будут располагаться entity
Слайд 10

Конфигурация приложения Spring MVC + Hibernate Также нам понадобится transactionManager

Конфигурация приложения Spring MVC + Hibernate

Также нам понадобится transactionManager

Слайд 11

Конфигурация приложения Spring MVC + Hibernate Полный текст: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc"

Конфигурация приложения Spring MVC + Hibernate

Полный текст:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">


class="org.springframework.web.servlet.view.InternalResourceViewResolver">



destroy-method="close">





class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">




org.hibernate.dialect.MySQLDialect
true



class="org.springframework.orm.hibernate5.HibernateTransactionManager">




Слайд 12

Отображение списка работников Теперь необходимо создать класс, который будет отвечать за работу с таблицей в БД

Отображение списка работников

Теперь необходимо создать класс, который будет отвечать за работу

с таблицей в БД
Слайд 13

Отображение списка работников Создадим DAO. DAO (Data Access Object) – это

Отображение списка работников

Создадим DAO.
DAO (Data Access Object) – это слой объектов

которые обеспечивают доступ к данным.
Слайд 14

Отображение списка работников В соответствии с best practice необходимо создать интерфейс: И его реализацию:

Отображение списка работников

В соответствии с best practice необходимо создать интерфейс:
И его

реализацию:
Слайд 15

Отображение списка работников Теперь необходимо обеспечить доступ реализации к БД. Для

Отображение списка работников

Теперь необходимо обеспечить доступ реализации к БД. Для этого

ей понадобится доступ к sessionFactory.
Слайд 16

Отображение списка работников Реализуем метод getAllEmployees. Укажем ему аннотацию @Transactional. При

Отображение списка работников

Реализуем метод getAllEmployees. Укажем ему аннотацию @Transactional.
При использовании аннотации

@Transactional, Spring берет на себя ответственность за открытие и закрытие транзакций.
Слайд 17

Отображение списка работников

Отображение списка работников

Слайд 18

Отображение списка работников Способ получения 1: Способ получения 2:

Отображение списка работников

Способ получения 1:
Способ получения 2:

Слайд 19

Отображение списка работников @Repository – специализированный компонент (@Component). Данная аннотация используется

Отображение списка работников

@Repository – специализированный компонент (@Component). Данная аннотация используется для

DAO. При поиске аннотаций Spring также будет регистрировать все DAO с аннотацией @Repository в Spring Container.
Слайд 20

Отображение списка работников Теперь создадим контроллер

Отображение списка работников

Теперь создадим контроллер

Слайд 21

Отображение списка работников Добавим страницу вывода

Отображение списка работников

Добавим страницу вывода

Слайд 22

Аннотация @Service В соответствии с best practice между контроллером и dao должен быть service

Аннотация @Service

В соответствии с best practice между контроллером и dao должен

быть service
Слайд 23

Аннотация @Service Аннотация @Service отмечает класс, содержащий бизнес-логику. В иерархии компонентов

Аннотация @Service

Аннотация @Service отмечает класс, содержащий бизнес-логику. В иерархии компонентов Service

выступает связующим звеном между контроллером и DAO.
Слайд 24

Аннотация @Service Также аннотацию @Transactional можно перенести из DAO в Service

Аннотация @Service

Также аннотацию @Transactional можно перенести из DAO в Service

Слайд 25

Добавление работника Прежде всего добавим кнопку и метод перехода на необходимый view

Добавление работника

Прежде всего добавим кнопку и метод перехода на необходимый view

Слайд 26

Добавление работника Создадим форму:

Добавление работника

Создадим форму:

Слайд 27

Добавление работника Теперь сохраним работника

Добавление работника

Теперь сохраним работника

Слайд 28

Добавление работника Теперь сохраним работника

Добавление работника

Теперь сохраним работника