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.
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.
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.
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:
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,
findByIdDalam coretan di atas, saya mempunyai SoftDeleteRepositoryImpl
melaksanakan antara mukaLangkah 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
Langkah 5: Laksanakan Soft Delete dalam Lapisan Perkhidmatan
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!