Spring ve pgAdmin kurulumları yapıldı. Ardından spring ile 'code first' prensibi doğrultusunda entitys, tablolar, kolonlar ve tabloların ilişkisi oluşturuldu. Sonrasında database bağlantısı gerçekleştirildi.
Katmanlı mimariye uyum sağlamak için 'repositories' ve 'controllers' packages oluşturuldu. Repositories içerisinde her bir entity için Interface oluşturuldu ve içlerinde 'JpaRepository' sayesinde database bağlantıları daha kolay ve işlevsel hale getirildi.
Sonrasında her bir entity için 'controllers' katmanı oluşturuldu ve ekleme, düzenleme, silme, id' ye göre getirme işlemleri için methodlar yazıldı.
Swagger UI kurulumu gerçekleştirildi. Böylece API erişimi daha kolay hale getirildi.
Önceki workshop' da oluşturduğum 'controllers' katmanını Request - Response pattern uyumlu hale getirdim. Bunun için 'dtos' adında bir package oluşturdum. Her bir entity için Request - Response işlemlerini gerçekleştirdim. Böylece controller katmanında direk entityler ile bağlantı kurmak yerine, neyi gösterip neyi göstermeyeceğimi ayarlayabildiğim bir yapı oluşturdum.
Bu workshop' da 'services' katmanını projeme ekledim. Bu projede kötü koddan iyi koda doğru gidildiği için 'controllers' katmanında yazdığım kontrolleri 'services' katmanında yazmam gerektiğini öğrendim. Bunun için Service adıyla Interfaceler oluşturdum. Bu interfaceleri, Manager adıyla java classlarına implement ettim. Sonrasında controllerda yazdığım kodları 'services' katmanına aktarmış oldum. Böylece kullanıcıyı entities ile direk teması aradan kaldırmış oldum. Bunu da Manager classlarında mapping yaparak sağladım.
Bu workshop' da projeme her bir entitynin repositorysinde 'Derived' ve 'JPQL Query' sorgu örnekleri ekledim. Sonrasında 'services' katmanında değişikliklerini uyguladım ve 'controllers' katmanında CRUD işlemlerini uyguladım. Böylece 'Derived' ve 'JPQL Query' sorgularını öğrenmiş oldum.
Bu workshop' da projemin add requestlerine validation ve business rule ekledim. Ardından projeme 'core katmanı' ekleyip global exception handling oluşturdum.