Member-only story
DTO Nedir?
Backend geliştirirken veritabanındaki entity sınıfımız ile API’den döndürmek istediğimiz veri aynı olmayabilir. Ya da frontend’den gelen request içinde sadece belirli alanları almak isteyebiliriz.
DTO kullanmaya başladığım ilk dönemlerde, her entity için ek bir class yazmak gereksiz bir maliyet gibi görünüyordu. Ancak projede endpoint sayısı arttıkça, entity’leri doğrudan dışarı açmanın uzun vadede iyi bir fikir olmadığını fark ettim. Özellikle kullanıcı bilgileri, token işlemleri, validation kuralları ve farklı response ihtiyaçları ortaya çıktığında, DTO kullanmanın kodu yönetmeyi ciddi anlamda kolaylaştırdığını gördüm.
DTO Nedir?
DTO, “Data Transfer Object” kelimelerinin kısaltmasıdır.
En basit haliyle DTO, katmanlar arasında veri taşımak için kullanılan nesnedir. Controller, service ve client arasındaki veri alışverişinde sıkça kullanılır.
DTO’nun amacı iş mantığı yazmak değildir. Sadece taşınacak verinin şeklini belirler.
Örneğin şu anda üzerinde çalıştığım projede kullanıcı bilgilerini frontend’e dönerken direkt User entity’sini dönmüyorum. Bunun yerine CurrentUserResponse adında bir DTO kullanıyorum.
public record CurrentUserResponse(
Long id,
String email,
String name,
String pictureUrl,
String careerGoal,
String location,
UserRole role…





