Rest API CRUD Web Service Project

Напишем приложение 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

Related Posts