
Напишем приложение CRUD wiki: (сокр. от англ. create, read, update, delete — «создать, прочесть, обновить, удалить») — акроним, обозначающий четыре базовые функции, используемые при работе с персистентными хранилищами данных.
В будущем можно будет использовать для тренировок в написании тестов на Junit5. Пример взят книжный, переработан под собственные нужды.
Задание:
Используя Spring и Hibernate реализовать CRUD REST API web service. Создать БД MsSQL. Показать работу приложения на стороне клиента (jsp).
Использовал:
Spring jdbc | Spring context | Hibernate |
MySQL | MAMP | Tomcat |
Создадим таблицу Person.
CREATE TABLE Person ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, First_name VARCHAR(150), Second_name VARCHAR(150), Birthday DATE ); |
Далее необходимо описать модель таблицы в java. Проставить аннотации, по смыслу все понятны, @Entity – класс является сущностью.
@Entity @Table(name = "Person") public class Person{ @Id @Column(name = "ID") @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @Column(name = "First_name") private String FirstName; @Column(name = "Second_name") private String LastName; @Column(name = "Birthday") private String Birthday; |
Следующим этапом создаем интерфейс доступа к базе данных и его реализацию, в простонародье DAO (wiki: data access object (DAO) — это объект, который предоставляет абстрактный интерфейс к какому-либо типу базы данных или механизму хранения.)
В интерфейсе описываем все действия с объектом Person (Добавление, Удаление, Изменение, Получение и тд).
public interface PersonDao { public void addPerson(Person person); public void removePerson(int id); public void updatePerson(Person person); public Person getPersonById(int id); public List<Person> listPersons(); } |
Реализация интерфейса в классе PersonDaoImpl. Гетеры, Сетеры, логирование и реализация методов.
@Override public void addPerson(Person person) { Session session = this.sessionFactory.getCurrentSession(); session.persist(person); LOGGER.info("Person add. " + person); } |
Далее, создадим пакет service – так называемый сервисный слой, интерфейс и его реализация. Тут описывается бизнес логика.
@Service public class PersonServiceImpl implements PersonService { private PersonDao personDao; public void setPersonDao(PersonDao personDao) { this.personDao = personDao; } @Override @Transactional public void addPerson(Person person) { this.personDao.addPerson(person); } @Override @Transactional public void removePerson(int id) { this.personDao.removePerson(id); } |
Контроллер – PersonController.
Для front-end используем JSP. CSS+HTML.
Ссылка на GitHub:
Github Rest CRUD Web Service Project