Soft delete kavramını kullanmak için normalde önce kaydı delete çağırmıyor onun yerine update ediyorum. Sonrasında ise bütün sorgularımda o kolonu eklemek zorunda kalıyorum. Bunun daha kolay bir yolu var mıdır?
comments
1 references
// Comments are closed.
Bir entity için entityRepo.delete() metodunu çağırdığımız zaman arkada normal olarak delete from ….. komutu çalışıyor. JPA kullanırken delete komutunun davranışını değiştirebiliyoruz.
Bunun için şöyle birşey yapmamız gerekiyor.
Burda gördüğümüz @SQLDelete annotation delete metodunun öntanımlı davranışını değiştiriyor ve entitimRepo.delete(entitim) çağırdığımız zaman bu sql kodu çalışıyor.
Buraya kadar güzel. Bundan sonra entitimRepo.findAll() dediğimiz zaman bu deletedAt kolonu dolu olanların gelmemesini istiyoruz. Keza bizim için artık silindiler anlamına geliyor. Bunun için aşağıdaki gibi bir kod parçası eklediğimiz zaman otomatik olarak bütün sorgularımızı bu sorgu eklenerek çağıracaktır.
@Where annotation ile bir sorgunun where kısmına eklenilecek kod parçasını yazıyoruz. Bunu yazdığımız zaman çalıştırılan jpa’nın yönettiği bütün sorgulara (native query hariç) bu kod parçasını ekleyecektir. Bu durumda da deleted_at kolonu null olan kayıtlar her zaman geleceği için soft delete işlemini gerçekleştirmiş olacaktır.