Anotasi @Transactional dalam Spring memainkan peranan penting dalam mengurus transaksi dalam aplikasi anda. Ia mentakrifkan dua parameter penting: pengasingan dan penyebaran.
Penyebaran menentukan cara transaksi berinteraksi dengan transaksi sedia ada. Pilihan utama termasuk:
Nilai lalai DIPERLUKAN, yang sesuai dalam kebanyakan situasi.
Pengasingan mentakrifkan peraturan keterlihatan data antara transaksi. Beberapa peringkat tersedia:
Tahap pengasingan optimum bergantung pada keperluan khusus aplikasi anda.
Pertimbangkan untuk mengubah suai nilai lalai apabila:
Bacaan kotor berlaku apabila utas 1 menulis nilai (x) dan utas 2 membaca (x) sebelum ia dilakukan. Jika urutan 1 mengembalikan perubahannya, urutan 2 kini mempunyai nilai yang salah.
Untuk mengelakkan bacaan kotor, anda boleh menetapkan pengasingan kepada ISOLATION_READ_COMMITTED atau ISOLATION_REPEATABLE_READ. Ini memastikan urutan 2 hanya membaca nilai komited atau syot kilat yang konsisten.
Pertimbangkan coretan kod berikut:
<code class="java">@Transactional(propagation=Propagation.REQUIRES_NEW) public void provideService() { // Code that requires a new transaction }</code>
Dengan penyebaran ditetapkan kepada REQUIRES_NEW, transaksi baharu sentiasa dibuat apabila memasuki provideService() dan komited apabila keluar, tanpa mengira konteks transaksi di sekelilingnya.
Atas ialah kandungan terperinci Bagaimanakah @Transactional Pengasingan dan Pembiakan Mempengaruhi Aplikasi Spring Anda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!