Rumah  >  Artikel  >  Java  >  Melaksanakan Padam Lembut dalam Spring WebFlux dengan RC

Melaksanakan Padam Lembut dalam Spring WebFlux dengan RC

Susan Sarandon
Susan Sarandonasal
2024-11-17 09:54:03988semak imbas

Implementing Soft Delete in Spring WebFlux with RC

Pengurusan data ialah komponen asas dalam pembangunan perisian, terutamanya apabila mengendalikan rekod yang perlu dialih keluar daripada penggunaan aktif. Daripada memadamkan rekod secara kekal (kaedah yang dikenali sebagai "padam keras"), banyak aplikasi menggunakan teknik yang dipanggil "padam lembut." Pendekatan "padam lembut" ialah penyelesaian yang digunakan secara meluas yang menandakan rekod sebagai tidak aktif tanpa mengalih keluarnya secara kekal, membolehkan pemulihan data mudah dan penjejakan sejarah.

Pada masa ini, tidak seperti Spring Data JPA dan Hibernate, Spring Data R2DBC tidak menawarkan anotasi terbina dalam untuk mengendalikan pemadaman lembut secara automatik. Akibatnya, pembangun menggunakan pelaksanaan atau pertanyaan repositori tersuai untuk mencapai kefungsian yang serupa.

Dalam artikel ini, kami akan mengkaji pemadaman lembut, faedahnya dan cara melaksanakannya dalam aplikasi Spring WebFlux dengan R2DBC.

Apa itu Soft Delete

Pemadaman lembut ialah kaedah pengurusan data di mana rekod dibenderakan sebagai tidak aktif atau "dipadamkan" tanpa dialih keluar daripada pangkalan data. Biasanya, ini melibatkan penambahan medan pada entiti, seperti dipadamkan (boolean) atau deletedDate (cap masa), untuk menunjukkan bahawa rekod tidak lagi aktif. Daripada memadamkan data secara kekal, pemadaman lembut menandakan rekod sebagai dipadam secara logik, menyembunyikannya daripada pertanyaan standard sambil mengekalkannya untuk potensi pemulihan atau pengauditan.

Faedah Soft Delete

  1. Pemulihan Data: Padam lembut membolehkan pemulihan data dengan mudah. Jika rekod dipadamkan secara tidak sengaja, ia boleh "dinyahpadam" dengan cepat dengan menetapkan semula bendera, memastikan tiada data hilang secara kekal.
  2. Data Sejarah: Padam lembut menyediakan jejak audit. Organisasi selalunya perlu menyimpan data sejarah untuk tujuan pematuhan atau pelaporan, dan pemadaman lembut membolehkannya tanpa menyesakkan data aktif.
  3. Integriti Data: Dalam sistem dengan perhubungan yang rumit, pemadaman rekod secara kekal boleh menyebabkan pautan terputus dan ketidakkonsistenan data. Padam lembut menangani perkara ini dengan memastikan data berkaitan tetap utuh sambil menandakan rekod yang dipadam sebagai tidak aktif.
  4. Keselamatan dan Pematuhan: Peraturan selalunya memerlukan data disimpan untuk tempoh tertentu. Padam lembut membolehkan pembangun memenuhi keperluan pematuhan ini tanpa menyediakan data kepada pengguna biasa.

Bagaimana untuk melaksanakan Padam Lembut dengan Spring Reactive dan R2DBC

Jika anda berminat untuk melaksanakannya sendiri, saya telah menyediakan kod permulaan — aplikasi blog ringkas dengan titik akhir CRUD asas dan kes ujian unit. Anda boleh mengakses kod pemula dari repositori GitHub saya menggunakan pautan ini. Jadi, mari teruskan.

Langkah 1: Tambahkan Medan untuk Menandai Rekod sebagai Dipadamkan

Untuk melaksanakan ini, tambahkan medan dalam kelas entiti anda untuk mewakili status pemadaman. Pendekatan yang lebih berkesan ialah mencipta kelas abstrak (AbstractSoftDeletableEntity), tentukan medan status pemadaman di dalamnya dan minta kelas entiti anda melanjutkan kelas abstrak ini. Medan ini sama ada boleh menjadi boolean (dipadamkan) yang menunjukkan sama ada rekod dipadamkan atau cap masa (deletedDate) untuk menentukan bila ia dipadamkan. Saya mengesyorkan anda menggunakan cap masa, kerana ia memberikan butiran tambahan tentang masa pemadaman berlaku:

Langkah 2: Ubah suai kelas entiti untuk melanjutkan kelas abstrak

Mengubah suai kelas entiti untuk melanjutkan AbstractSoftDeletableEntity

mewujudkan tahap pengabstrakan dan pengasingan kebimbangan, dengan itu mematuhi Prinsip Tanggungjawab Tunggal reka bentuk berorientasikan objek.

Langkah 3: Cipta Repositori Tersuai Generik Memperluaskan SimpleR2dbcRepository Banyak sumber untuk melaksanakan padam lembut mengesyorkan menggunakan repositori tersuai untuk setiap entiti, yang boleh menyusahkan dan sukar diurus apabila aplikasi mempunyai banyak entiti. Pendekatan yang lebih baik ialah menggunakan antara muka repositori generik sambil menyediakan pelaksanaan tersuai untuk kaedah asas seperti counts, deleteById, deleteAll,

findById
, dan lain-lain.

Dalam coretan di atas, saya mempunyai SoftDeleteRepositoryImpl

melaksanakan antara muka
SoftDeleteRepository
, yang menyediakan satu lagi lapisan abstraksi dengan menyenaraikan kaedah abstrak yang dipertingkatkan untuk operasi padam lembut.

Langkah 4: Mengubah suai Repositori Entiti untuk melanjutkan Antara Muka Repositori Tersuai Akhir sekali, ubah suai antara muka repositori utama dengan memanjangkan SoftDeleteRepository dan menyediakan nama kelas entiti dan jenis data id sebagai argumen jenis generik. Ia juga menyediakan pelaksanaan lalai untuk kaedah findById, findAll, deleteById dan

deleteAll
untuk menggunakan pelaksanaan tersuai padam lembut ditakrifkan dalam antara muka
SoftDeleteRepository

.

Langkah 5: Laksanakan Soft Delete dalam Lapisan Perkhidmatan
Setelah anda melengkapkan langkah di atas, anda sudah bersedia. Tiada pelaksanaan selanjutnya diperlukan pada lapisan perkhidmatan domain. Terutama sekali, kedua-dua kes ujian pengawal dan unit juga tidak memerlukan pengubahsuaian.<script></script> <script></script>Untuk mengambil semua rekod (termasuk rekod yang dipadam) atau rekod yang dipadam, anda boleh menggunakan kaedah pertanyaan seperti yang ditunjukkan dalam coretan di bawah:<script></script> <script></script> <script></script> <script></script>

Kesimpulan

Pemadaman lembut ialah kaedah yang berkesan dan fleksibel untuk mengurus data tanpa memadamkannya secara kekal, menjadikannya sesuai untuk aplikasi yang memerlukan pemulihan data, pematuhan atau penjejakan data sejarah. Dalam panduan ini, kami membincangkan tentang pemadaman lembut, faedahnya dan cara ia boleh dilaksanakan dalam aplikasi Spring WebFlux dengan R2DBC.

Anda boleh mendapatkan kod sumber lengkap di GitHub

Atas ialah kandungan terperinci Melaksanakan Padam Lembut dalam Spring WebFlux dengan RC. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn