Odak modu

Java Spring

DTO Kavramı ve Uygulanması

Öncelikle, Spring uygulamalarında "DTO" kullanımının temel amacı, veritabanındaki entity'lerden alınan verileri belirli bir formatta ve sadece gerekli olan alanları içerecek şekilde diğer katmanlara aktarmaktır.

Aşağıda, bir Customer entity'sini ve ona karşılık gelen bir CustomerDTO (Data Transfer Object) sınıfını oluşturduğumuz örnek bir Java kodu bulunmaktadır:

// Customer entity class
@Entity
public class Customer {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
   
  private String name;
  private String mail;
  private String otherField; // Örneğin, gereksiz bir alan

  // Getter ve setter metotları
}

// CustomerDTO class
public class CustomerDTO {
  private Long id;
  private String name;
  private String mail;

  // Getter ve setter metotları
}

Yukarıdaki örnekte, Customer entity'sinde bir "otherField" adında gereksiz bir alan olduğunu varsayalım. Ancak, kullanıcılara sadece "id", "name" ve "mail" alanlarını göstermek istiyoruz. Bu nedenle, CustomerDTO sınıfını oluşturduk ve sadece ilgili alanları içermesini sağladık.

Manuel olarak yapılan bu işlemi otomatikleştirmek için "ModelMapper" kütüphanesini kullanabiliriz. Aşağıda, ModelMapper'ın nasıl kullanılacağına dair bir örnek kod bulunmaktadır:

@Service
public class CustomerService {
   
  @Autowired
  private CustomerRepository customerRepository;
   
  @Autowired
  private ModelMapper modelMapper;

  public CustomerDTO getCustomerById(Long customerId) {
    Optional<Customer> customerOptional = customerRepository.findById(customerId);

    if (customerOptional.isPresent()) {
      Customer customer = customerOptional.get();
       
      // Customer entity'sini CustomerDTO'ya dönüştürme
      CustomerDTO customerDTO = modelMapper.map(customer, CustomerDTO.class);

      return customerDTO;
    }

    // Eğer müşteri bulunamazsa null dönebilir veya uygun bir hata yönetimi yapılabilir.
    return null;
  }
}

Yukarıdaki örnekte, ModelMapper'ı bir Spring servisi içinde kullanarak, Customer entity'sini CustomerDTO'ya dönüştürdük. Bu sayede, her iki sınıf arasındaki alan adları eşleştirilir ve veri transferi otomatik olarak gerçekleştirilir.

Bu örnek, Spring framework'ünde DTO kullanımını ve ModelMapper'ın nasıl entegre edileceğini göstermektedir. Bu yaklaşım, gereksiz veri transferini önleyerek uygulamanızın performansını artırabilir ve kodunuzun daha temiz ve sürdürülebilir olmasını sağlayabilir.

left-disk

Yazılım Kariyerinde İlerlemeni Hızlandıracak Programlar

Patika+ programlarımız ile 4-8 aylık yoğun yazılım kamplarına katıl, temel bilgilerden başlayarak kapsamlı bilgiler edin, yazılım kariyerine başla!

right-cube

Yorumlar

Yorum yapabilmek için derse kayıt olmalısın!