DTO Nedir? Spring Boot’ta Entity vs DTO Farkı ve MapStruct Kullanımı (2026)
DTO (Data Transfer Object), özellikle Java ve Spring Boot ile geliştirilen REST API’lerde verinin güvenli, kontrollü ve hafif biçimde taşınmasını sağlayan sade nesnelerdir.
Bu rehberde şu sorulara net cevap bulacaksınız: DTO nedir?, DTO neden kullanılır?, Entity vs DTO farkı nedir?, MapStruct ile DTO nasıl oluşturulur?
DTO Nedir? (Kısa Tanım)
DTO (Data Transfer Object), uygulamanın dış sistemlerle veri alışverişi yaparken kullandığı, iş mantığı içermeyen, yalnızca veri taşıyan nesnelerdir.
Amaç: Entity’yi doğrudan dış dünyaya açmadan, kontrollü bir API sözleşmesi sunmak.
Neden DTO Kullanılır?
1) Güvenlik
Entity doğrudan döndürülürse password, audit bilgileri veya internal alanlar yanlışlıkla API response’a dahil olabilir.
2) API Stabilitesi
Entity değişse bile DTO sabit kalır. Böylece client uygulamalar bozulmaz.
3) Performans
Sadece gerekli alanlar taşınır. JSON payload küçülür.
DTO vs Entity Farkları
| Özellik | Entity | DTO |
|---|---|---|
| Amaç | Veritabanı modeli | API sözleşmesi |
| Annotation | @Entity | Genelde sade POJO |
| Güvenlik | Riskli olabilir | Kontrollü |
| Değişiklik Etkisi | API kırılabilir | API stabil kalır |
Spring Boot DTO Örneği
public class CustomerDto {
private Long id;
private String firstname;
private String lastname;
private String email;
}
MapStruct ile Entity → DTO Dönüşümü
@Mapper(componentModel = "spring")
public interface CustomerMapper {
CustomerDto toDto(Customer customer);
}
MapStruct compile-time mapping yaptığı için reflection tabanlı çözümlerden daha performanslıdır.
Request DTO vs Response DTO
Gerçek projelerde request ve response için ayrı DTO tanımlamak daha güvenlidir.
public class CreateCustomerRequest {
@NotBlank
private String firstname;
}
public class CustomerResponse {
private Long id;
private String firstname;
}
Java 17 Record ile DTO
public record CustomerDto(
Long id,
String firstname,
String lastname
) {}
Record kullanımı immutable DTO oluşturmayı kolaylaştırır.
DTO Best Practices (2026)
- Entity’yi asla doğrudan API response olarak döndürme
- Request ve Response DTO’larını ayır
- Validation anotasyonları kullan (@NotNull, @Email)
- MapStruct tercih et
- DTO versiyonlama düşün (v1, v2)
Sık Sorulan Sorular
DTO kullanmak zorunlu mu?
Hayır, ancak gerçek dünya projelerinde strongly recommended bir best practice’tir.
Projection mı DTO mu?
Projection sadece DB seviyesinde seçili alanları çeker. DTO ise API sözleşmesini temsil eder.
Sonuç: DTO kullanımı API’lerinizi daha güvenli, sürdürülebilir ve ölçeklenebilir hale getirir.