Dalam Spring's @Transactional anotation, parameter pengasingan dan penyebaran memainkan peranan penting dalam menentukan ketekalan data dan gelagat transaksi . Mari kita terokai setiap satu daripada mereka secara terperinci.
Penyebaran menentukan cara transaksi berinteraksi antara satu sama lain. Pilihan biasa ialah:
Secara lalai, @Transactional menggunakan penyebaran DIPERLUKAN. Selalunya, ini sudah memadai untuk kes penggunaan biasa.
Pengasingan mentakrifkan tahap pengasingan data antara transaksi. Pilihan termasuk:
Sistem pangkalan data mempunyai tahap pengasingan lalai tertentu. Sebagai contoh, MariaDB lalai kepada REPEATABLE READ.
Dirty Reads:
Konsep kritikal secara berasingan ialah "dirty reads" di mana transaksi boleh membaca data yang satu lagi transaksi tidak komited telah diubahsuai. Memahami konsep ini adalah penting untuk menentukan tahap pengasingan yang sesuai.Contoh Praktikal
Mengubahsuai Pengasingan dan Pembiakan:
<code class="java">@Transactional(propagation = Propagation.REQUIRES_NEW) public void provideService() { // ... }</code>
Untuk kaedah perkhidmatan di mana setiap pelaksanaan mesti mempunyai transaksi baharu, gunakan anotasi @Transactional dengan penyebaran ditetapkan kepada REQUIRES_NEW.
Mengesahkan Gelagat dengan Ujian Unit:
<code class="java">@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:/fooService.xml") public class FooServiceTests { // ... @Test public void testProvideService() { // ... } }</code>
Atas ialah kandungan terperinci Bagaimanakah Tahap Pengasingan dan Penyebaran dalam Anotasi @Transactional Spring Mempengaruhi Ketekalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!