DTO, uygulama katmanları arasındaki verinin transferi için kullanılır. Projede model katmanında oluşturulan entitylerimizi program arayüzünde aynı şekilde kullanmak yerine belirli verileri gösterebilecek bir tasarım sunar. Son kullanıcının bilmesini gerektirmeyen verileri ve güvenlik açığı oluşturabilecek durumlar bu şekilde önlenir. Tercih edilmesinin başlıca sebeplerinden birisi istekteki spesifik bilgileri tek bir grup haline getirerek sunucudaki send - response azaltımıdır. Ağ trafiğindeki yükü azaltır. Kaynak olarak veritabanından gelen veriyi kullanır.
Spring Boot kullanarak bir user projesi oluşturuldu. Kullanıcı bilgileriyle CRUD işlemleri gerçekleştirilmesi amaçlandı. Swagger UI kullanılarak PostgreSQL veri tabanı olarak kullanıldı.
application.properties dosyasında Postgresql DB bağlantısı ve Swagger UI propertyleri oluşturuldu.
Repository, Service ve Controller katmanları oluşturularak CRUD işlemleri HTTP metotları kullanılarak sağlandı. Ricardson Maturity Model 2.Seviye path yazımı kullanıldı. Configuration anotasyonu kullanılarak sınıfın bir config dosyası hale getirilmesi sağlandı. ModelMapper sınıfı Maven üzerinden dependency olarak eklenerek config dosyası projeye eklendi.
Farklı isteklere göre farklı veriler üzerinde değişiklik yapabilmek için birden fazla DTO oluşturuldu.
ModelMapper Dependency Injection yöntemiyle Service katmanına dahil edilerek Model katmanındaki entitylerin map() metoduyla DTO olarak dönüşümü sağlandı.
Controller katmanında mapping işlemleri sonrasında Swagger üzerinden oluşturulan veri transfer objeleri kontrol edildi.
Dönen response'un istenilen şekilde GET isteğindeki verileri listelediği görüldü.