Rumah > Soal Jawab > teks badan
Spring things, inject things dalam lapisan servis, lakukan dua operasi sisipan, adakah anda perlu membuang sendiri pengecualian dalam kaedah servis dan kemudian nyatakan rollback? Atau adakah sisipan akan digulung semula tanpa membuang pengecualian jika ia gagal?
Perlaksanaan proksi dao mybatis digunakan di sini Adakah akan ada gesaan atau pengecualian yang dilemparkan apabila sisipan gagal?
怪我咯2017-06-12 09:26:47
Gunakan @Transaction(rollbackFor=Throwable.class)
anotasi kepada kelas Perkhidmatan atau kaedah tertentu Perlu diingat bahawa anotasi @Transaction hanya menangkap dan melancarkan RuntimeException secara lalai, maksudnya, jika anda membuang Exception, ia tidak akan digulung semula, jadi anda perlu Ingat untuk menambah rollbackFor=Throwable.class untuk menentukan bahawa semua pengecualian akan ditarik balik
高洛峰2017-06-12 09:26:47
Saya bersetuju dengan jawapan @Positive Energy Frontline, dan menambah bahawa jika anda melakukan berbilang operasi dalam satu kaedah, anda perlu mempertimbangkan skop penyebaran transaksi Sudah tentu, lalai adalah penyebaran = Propagation.DIPERLUKAN, yang bermaksud: Jika ada tiada urus niaga buat masa ini, buat transaksi A baharu, jika sudah wujud dalam urus niaga, tambahkannya pada urus niaga ini.
淡淡烟草味2017-06-12 09:26:47
Jika pengecualian kompilasi dilemparkan, bolehkah anda menangkap dan mengendalikannya sendiri Memandangkan anda menggunakan rangka kerja spring dan menangkap serta mengendalikan pengecualian itu sendiri, rangka kerja itu tidak akan membantu anda melancarkan semula transaksi fail konfigurasi spring. Strategi roll bersetuju dengan apa yang dikatakan di tingkat pertama bahawa operasi lalai adalah rollback pengecualian ditambahkan pada lapisan perkhidmatan anda tidak mempunyai transaksi sendiri, jadi tidak perlu mempertimbangkan penyebaran tingkah laku.
淡淡烟草味2017-06-12 09:26:47
Selepas membaca dua jawapan sebelum ini, saya akan menambah sesuatu. Transaksi dalam Spring adalah proksi JDK berasaskan antara muka lalai. Jadi untuk dua kaedah sisipan yang dipanggil dalam lapisan Perkhidmatan anda, jika sisipan juga merupakan kaedah lapisan perkhidmatan, ia mestilah kaedah antara muka Jika kaedah persendirian, kaedah persendirian tidak akan ditarik balik. Juga beri perhatian kepada isu transaksi dalam situasi berbilang benang.