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 (Data Transfer Object) nedir? Spring Boot ile DTO kullanımı 2026
DTO, API çıktısını kontrol ederek güvenliği artırır ve bakım maliyetini düşürür.

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.
Entity DTO dönüşüm akışı
Controller → Service → Entity → Mapper → DTO → Response

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 ile API güvenliği
Sadece gerekli alanlar dış dünyaya açılır

DTO vs Entity Farkları

ÖzellikEntityDTO
AmaçVeritabanı modeliAPI sözleşmesi
Annotation@EntityGenelde sade POJO
GüvenlikRiskli olabilirKontrollü
Değişiklik EtkisiAPI kırılabilirAPI 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.

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Blog where the most up-to-date software is followed. (En güncel yazılımların takip edildiği blog sitesi)

Spring Boot ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *