/Spring-Boot-DTO

Using DTO for Spring Boot

Primary LanguageJava

DTO (Data Transfer Object) Nedir?

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.

image

Java tabanlı Spring Boot projesinde DTO kullanımı

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ı.

image

application.properties dosyasında Postgresql DB bağlantısı ve Swagger UI propertyleri oluşturuldu.

image

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.

image

Farklı isteklere göre farklı veriler üzerinde değişiklik yapabilmek için birden fazla DTO oluşturuldu.

image

ModelMapper Dependency Injection yöntemiyle Service katmanına dahil edilerek Model katmanındaki entitylerin map() metoduyla DTO olarak dönüşümü sağlandı.

image

Controller katmanında mapping işlemleri sonrasında Swagger üzerinden oluşturulan veri transfer objeleri kontrol edildi.

image

Dönen response'un istenilen şekilde GET isteğindeki verileri listelediği görüldü.

image