亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Jadual Kandungan
1. Apakah Pengurusan Transaksi?
2. Pengurusan Transaksi di Java Plain (JDBC)
3. Abstraksi Transaksi Spring
Komponen utama:
4. Pengurusan Transaksi Deklaratif dengan @Transactional
Langkah 1: Dayakan pengurusan transaksi
Langkah 2: Gunakan @Transactional pada kaedah perkhidmatan
Bagaimana ia berfungsi:
5. Memahami tingkah laku @Transactional
Contoh: Rollback pada pengecualian yang diperiksa
6. Tingkah laku penyebaran: mengendalikan panggilan bersarang
Contoh: Menggunakan REQUIRES_NEW
7. Perangkap biasa dan amalan terbaik
? Pencegahan diri memecahkan proksi
? Amalan terbaik
8. Pengurusan Transaksi Programmatik (apabila anda memerlukan lebih banyak kawalan)
9. Pengurusan Transaksi di Spring Boot
Pemikiran terakhir
Rumah Java javaTutorial Panduan Pengurusan Transaksi di Jawa dan Rangka Kerja Spring

Panduan Pengurusan Transaksi di Jawa dan Rangka Kerja Spring

Aug 01, 2025 am 06:25 AM
rangka kerja musim bunga transaksi java

Spring's @transactional hanya menggulung kembali untuk RuntimeException secara lalai. 2. Adalah perlu untuk menentukan bahawa pengecualian juga dilancarkan melalui rollbackfor. 3. Tingkah laku penyebaran yang diperlukan adalah nilai lalai. Memerlukan_new akan menggantung transaksi semasa. 4. Panggilan diri akan menyebabkan urus niaga gagal disebabkan kegagalan proksi. 5. Adalah disyorkan untuk menggunakan urus niaga deklaratif di lapisan perkhidmatan dan mengekalkan urus niaga pendek untuk meningkatkan prestasi. Akhirnya, tingkah laku urus niaga perlu disahkan melalui ujian untuk memastikan konsistensi data.

Panduan Pengurusan Transaksi di Jawa dan Rangka Kerja Spring

Menguruskan urus niaga dengan betul adalah kejam untuk mengekalkan integriti data dalam aplikasi Java, terutamanya ketika bekerja dengan pangkalan data. Dalam aplikasi perusahaan, urus niaga biasanya melibatkan pelbagai operasi yang mesti berjaya -atau, jika ada yang gagal, segala -galanya mesti dilancarkan kembali untuk mengekalkan konsistensi. Java dan Rangka Kerja Spring menyediakan alat yang berkuasa untuk mengendalikan pengurusan urus niaga dengan berkesan. Berikut adalah panduan praktikal untuk memahami dan melaksanakan pengurusan transaksi di Java dan Spring.

Panduan Pengurusan Transaksi di Jawa dan Rangka Kerja Spring

1. Apakah Pengurusan Transaksi?

Urus niaga adalah urutan operasi yang dilakukan sebagai unit kerja logik tunggal. Ia mesti memenuhi sifat asid:

  • Atomicity : Semua operasi dalam transaksi berjaya atau gagal bersama -sama.
  • Konsistensi : Pangkalan data kekal dalam keadaan yang konsisten sebelum dan selepas transaksi.
  • Pengasingan : Urus niaga serentak tidak mengganggu satu sama lain.
  • Ketahanan : Setelah dilakukan, perubahan kekal.

Di Java, pengurusan urus niaga boleh dikendalikan sama ada secara programatik (dengan kawalan eksplisit) atau deklaratif (menggunakan anotasi atau konfigurasi), dengan musim bunga yang memihak kepada yang terakhir.

Panduan Pengurusan Transaksi di Jawa dan Rangka Kerja Spring

2. Pengurusan Transaksi di Java Plain (JDBC)

Sebelum musim bunga, JDBC mentah biasanya digunakan, di mana urus niaga diuruskan secara manual menggunakan objek Connection .

 Sambungan conn = datasource.getConnection ();
Cuba {
    conn.setAutocommit (false); // Mula transaksi

    // melaksanakan operasi db
    jdbctemplate.update ("Kemas kini akaun set baki = baki -? Where id =?", 100, 1);
    jdbctemplate.update ("Kemas kini akaun set baki = baki? Di mana id =?", 100, 2);

    conn.commit (); // komit jika semua berjaya
} menangkap (pengecualian e) {
    conn.rollback (); // rollback atas kesilapan
    membuang e;
} akhirnya {
    conn.setautocommit (true);
    conn.close ();
}

Isu dengan Transaksi JDBC Manual :

Panduan Pengurusan Transaksi di Jawa dan Rangka Kerja Spring
  • Rawan ralat (mudah dilupakan rollback atau tutup).
  • Kod boilerplate.
  • Sukar untuk mengekalkan dan menguji.

Di sinilah abstraksi Spring menjadi berharga.


3. Abstraksi Transaksi Spring

Spring menyediakan model urus niaga yang konsisten yang menyokong kedua -dua pengaturcaraan dan pengurusan transaksi deklaratif , menghilangkan API transaksi yang mendasari (JDBC, JPA, JTA, dll.).

Komponen utama:

  • PlatformTransactionManager : antara muka teras (misalnya, DataSourceTransactionManager , JpaTransactionManager ).
  • @Transactional : Anotasi untuk penandaan transaksi deklaratif.
  • TransactionTemplate : Untuk kawalan programatik.

4. Pengurusan Transaksi Deklaratif dengan @Transactional

Ini adalah pendekatan yang paling biasa dan disyorkan pada musim bunga.

Langkah 1: Dayakan pengurusan transaksi

Tambah @EnableTransactionManagement ke kelas konfigurasi anda (biasanya tidak diperlukan dalam boot musim bunga, kerana ia dikonfigurasi auto).

 @Configuration
@EnableTransactionManagement
Transaksi Kelas Awam Konfigurasi {
    @Bean
    platform awamTransactionManager TransactionManager (DataSource DataSource) {
        kembali DataSourCetRansActionManager baru (DataSource);
    }
}

Langkah 2: Gunakan @Transactional pada kaedah perkhidmatan

 @Service
Bankservice kelas awam {

    @Autowired
    Jdbctemplate swasta jdbctemplate;

    @Transactional
    public void TransferMoney (Long FromID, Long Toid, Double Amaun) {
        jdbctemplate.update ("Kemas kini akaun set baki = baki -? di mana id =?", amaun, dari id);
        jdbctemplate.update ("Kemas kini akaun set baki = baki? Where id =?", Amaun, toid);
        // Sekiranya pengecualian berlaku, kedua -dua kemas kini dilancarkan
    }
}

Bagaimana ia berfungsi:

  • Spring mencipta proksi di sekitar kacang BankService .
  • Apabila transferMoney() dipanggil, proksi memulakan transaksi.
  • Jika kaedah selesai secara normal → transaksi dilakukan.
  • Sekiranya pengecualian yang diperiksa atau tidak terkawal dilemparkan → Transaksi Rolls kembali (secara lalai, hanya untuk pengecualian yang tidak terkawal).

5. Memahami tingkah laku @Transactional

@Transactional mempunyai beberapa atribut dengan tingkah laku yang baik:

Atribut Tujuan
propagation Mentakrifkan bagaimana urus niaga harus berkelakuan jika seseorang sudah wujud (contohnya, REQUIRED , REQUIRES_NEW ).
isolation Menetapkan tahap pengasingan (misalnya, READ_COMMITTED , SERIALIZABLE ).
rollbackFor Tentukan pengecualian yang mencetuskan rollback (misalnya, rollbackFor = Exception.class ).
noRollbackFor Pengecualian yang tidak boleh mencetuskan rollback.
readOnly Mengoptimumkan operasi baca sahaja (contohnya, pertanyaan).

Contoh: Rollback pada pengecualian yang diperiksa

Secara lalai, Spring hanya menggulung kembali untuk pengecualian yang tidak terkawal (subclass RuntimeException ). Untuk memasukkan pengecualian yang diperiksa:

 @Transactional (rollbackfor = exception.class)
public void TransferMoney (rentetan, rentetan ke, jumlah ganda) melemparkan ioException {
    // logik perniagaan
    jika (jumlah <= 0) membuang ioException baru ("jumlah tidak sah");
}

Sekarang, IOException akan mencetuskan pengembalian semula.


6. Tingkah laku penyebaran: mengendalikan panggilan bersarang

Salah satu aspek yang paling disalahpahami ialah penyebaran transaksi .

Nilai Biasa:

  • REQUIRED (lalai): Gunakan transaksi sedia ada, atau buat yang baru.
  • REQUIRES_NEW : Sentiasa menangguhkan transaksi semasa dan memulakan yang baru.
  • SUPPORTS : Jalankan dalam transaksi jika wujud, jika tidak transaksional.

Contoh: Menggunakan REQUIRES_NEW

 @Service
Kelas Public Paymentservice {

    @Autowired
    Auditservice Auditservice peribadi;

    @Transactional
    Processpayment void public () {
        // bahagian urus niaga luar
        jdbctemplate.update ("masukkan ke dalam pembayaran ...");

        // Memulakan transaksi baru; Sekiranya ini gagal, luar masih boleh melakukan
        auditService.logPayment ();

        // Teruskan transaksi luar
    }
}

@Service
Auditservice kelas awam {

    @Transactional (penyebaran = propagation.requires_new)
    public void logPayment () {
        jdbctemplate.update ("Masukkan ke dalam audit_log ...");
        // walaupun ini gagal, pemprosesan pembayaran mungkin masih dilakukan
    }
}

Penggunaan REQUIRES_NEW dengan teliti -terutamanya jika anda memerlukan konsistensi yang kuat.


7. Perangkap biasa dan amalan terbaik

? Pencegahan diri memecahkan proksi

Jika kaedah dalam kelas yang sama memanggil kaedah @Transactional secara langsung, urus niaga tidak digunakan kerana ia memintas proksi.

 @Service
kelas awam selfcallproblem {

    metoda void awam () {
        kaedahBB (); // Tiada transaksi! Panggilan langsung, tiada proksi
    }

    @Transactional
    kaedah void publicb () {
        // tidak transaksional apabila dipanggil dari metoda
    }
}

? Betulkan : Suntikan perkhidmatan ke dalam logik sendiri atau reflektor.

? Amalan terbaik

  • Sapukan @Transactional pada lapisan perkhidmatan , bukan DAO/repositori.
  • Pastikan urus niaga pendek dan fokus untuk mengurangkan pertarungan kunci.
  • Lebih suka deklaratif atas pengurusan pengaturcaraan.
  • Gunakan readOnly = true untuk kaedah pertanyaan untuk meningkatkan prestasi.
  • Berhati -hati dengan REQUIRES_NEW -it boleh menyebabkan kegagalan separa.
  • Ujian Tingkah Laku Transaksi Menggunakan TestTransaction dalam ujian integrasi.

8. Pengurusan Transaksi Programmatik (apabila anda memerlukan lebih banyak kawalan)

Kadang-kadang anda memerlukan kawalan halus. Gunakan TransactionTemplate :

 @Service
kelas awam CustomTransactionService {

    @Autowired
    TransactionTemplate TransactionTemplate;

    public void processData () {
        TransactionTemplate.Execute (status -> {
            Cuba {
                jdbctemplate.update ("masukkan ke ...");
                kembali benar;
            } menangkap (pengecualian e) {
                status.setrollBackOnly ();
                kembali palsu;
            }
        });
    }
}

Berguna untuk logik bersyarat atau apabila @Transactional terlalu tegar.


9. Pengurusan Transaksi di Spring Boot

Spring Boot Auto-Configures Pengurusan Transaksi Jika ia mengesan:

  • DataSource
  • Data Spring JPA atau serupa

Tambah sahaja:

 <geterlihat>
    <groupId> org.springframework.boot </groupId>
    <stifactid> Spring-Boot-Starter-Data-JPA </artifactid>
</ketergantungan>

Kemudian gunakan @Transactional secara bebas -tidak ada persediaan tambahan yang diperlukan.


Pemikiran terakhir

Pengurusan Transaksi Spring sangat memudahkan bekerja dengan operasi yang mematuhi asid. Dengan menggunakan @Transactional dengan bijak dan memahami penyebaran, pengasingan, dan peraturan rollback, anda boleh membina aplikasi yang mantap dan boleh dipelihara.

Kuncinya adalah:

  • Gunakan transaksi deklaratif secara lalai.
  • Faham bagaimana proksi berfungsi.
  • Elakkan urus niaga jangka panjang.
  • Kes -kes kelebihan ujian yang melibatkan pengecualian dan panggilan bersarang.

Dengan amalan ini, anda akan mengelakkan ketidakkonsistenan data biasa dan membina sistem yang lebih dipercayai.

Pada asasnya, biarkan Spring mengendalikan boilerplate -jadi anda boleh memberi tumpuan kepada logik perniagaan.

Atas ialah kandungan terperinci Panduan Pengurusan Transaksi di Jawa dan Rangka Kerja Spring. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Gunakan Spring Boot dan Spring AI untuk membina aplikasi kecerdasan buatan generatif Gunakan Spring Boot dan Spring AI untuk membina aplikasi kecerdasan buatan generatif Apr 28, 2024 am 11:46 AM

Sebagai peneraju industri, Spring+AI menyediakan penyelesaian terkemuka untuk pelbagai industri melalui API yang berkuasa, fleksibel dan fungsi lanjutannya. Dalam topik ini, kami akan menyelidiki contoh aplikasi Spring+AI dalam pelbagai bidang Setiap kes akan menunjukkan cara Spring+AI memenuhi keperluan khusus, mencapai matlamat dan meluaskan LESSONSLEARNED ini kepada rangkaian aplikasi yang lebih luas. Saya harap topik ini dapat memberi inspirasi kepada anda untuk memahami dan menggunakan kemungkinan Spring+AI yang tidak terhingga dengan lebih mendalam. Rangka kerja Spring mempunyai sejarah lebih daripada 20 tahun dalam bidang pembangunan perisian, dan sudah 10 tahun sejak versi Spring Boot 1.0 dikeluarkan. Sekarang, tiada siapa boleh mempertikaikan Spring itu

JAX-RS lwn. Spring MVC: Pertempuran antara gergasi RESTful JAX-RS lwn. Spring MVC: Pertempuran antara gergasi RESTful Feb 29, 2024 pm 05:16 PM

Pengenalan API RESTful telah menjadi sebahagian daripada aplikasi WEB moden. Mereka menyediakan pendekatan piawai untuk mencipta dan menggunakan perkhidmatan Web, dengan itu meningkatkan kemudahalihan, kebolehskalaan dan kemudahan penggunaan. Dalam ekosistem Java, JAX-RS dan springmvc ialah dua rangka kerja yang paling popular untuk membina API RESTful. Artikel ini akan melihat secara mendalam kedua-dua rangka kerja, membandingkan ciri, kelebihan dan keburukannya untuk membantu anda membuat keputusan termaklum. JAX-RS: JAX-RSAPI JAX-RS (JavaAPI untuk Perkhidmatan Web RESTful) ialah JAX-RSAPI standard yang dibangunkan oleh JavaEE untuk membangunkan REST

Berubah dari front-end ke pembangunan back-end, adakah lebih menjanjikan untuk belajar Java atau Golang? Berubah dari front-end ke pembangunan back-end, adakah lebih menjanjikan untuk belajar Java atau Golang? Apr 02, 2025 am 09:12 AM

Laluan Pembelajaran Backend: Perjalanan Eksplorasi dari Front-End ke Back-End sebagai pemula back-end yang berubah dari pembangunan front-end, anda sudah mempunyai asas Nodejs, ...

Ubah suai RequestBody dalam gerbang musim bunga Ubah suai RequestBody dalam gerbang musim bunga Feb 09, 2024 pm 07:15 PM

Saya ingin mengubah suai badan permintaan sebelum menghalakannya ke uri yang diberikan. Ubah suai kandungan berdasarkan dokumentasi yang saya gunakan org.springframework.cloud.gateway.filter.factory.rewrite.modifyrequestbodygatewayfilterfactory. Apabila memulakan pelayan saya, pelayan gagal bermula dengan sebab ralat berikut: Elemen [spring.cloud.gateway.routes[0].filters[0].modifyrequestbody.class] tidak terikat. \n\nOperasi:\

Mengoptimumkan pengelogan program: Berkongsi petua tentang menetapkan tahap log log4j Mengoptimumkan pengelogan program: Berkongsi petua tentang menetapkan tahap log log4j Feb 20, 2024 pm 02:27 PM

Mengoptimumkan pengelogan program: Petua untuk menetapkan tahap log log4j Ringkasan: Pengelogan program memainkan peranan penting dalam penyelesaian masalah, penalaan prestasi dan pemantauan sistem. Artikel ini akan berkongsi petua tentang menetapkan tahap log log4j, termasuk cara menetapkan tahap log yang berbeza dan cara menggambarkan proses tetapan melalui contoh kod. Pengenalan: Dalam pembangunan perisian, pembalakan adalah tugas yang sangat penting. Dengan merekodkan maklumat penting semasa proses menjalankan program, ia boleh membantu pembangun mengetahui punca masalah dan melakukan pengoptimuman prestasi dan pemantauan sistem.

Pemahaman mendalam tentang seni bina dan prinsip kerja rangka kerja Spring Pemahaman mendalam tentang seni bina dan prinsip kerja rangka kerja Spring Jan 24, 2024 am 09:41 AM

Analisis mendalam tentang seni bina dan prinsip kerja rangka kerja Spring Pengenalan: Spring ialah salah satu rangka kerja sumber terbuka yang paling popular dalam ekosistem Java Ia bukan sahaja menyediakan set pengurusan kontena dan fungsi suntikan pergantungan yang berkuasa, tetapi juga menyediakan banyak fungsi lain, seperti urus niaga, AOP, akses data, dll. Artikel ini akan memberikan analisis mendalam tentang seni bina dan prinsip kerja rangka kerja Spring, dan menerangkan konsep berkaitan melalui contoh kod tertentu. 1. Konsep teras rangka kerja Spring 1.1IoC (Penyongsangan Kawalan) Teras Spring

Penjelasan terperinci tentang kaedah sambungan pangkalan data Oracle Penjelasan terperinci tentang kaedah sambungan pangkalan data Oracle Mar 08, 2024 am 08:45 AM

Penjelasan terperinci tentang kaedah sambungan pangkalan data Oracle Dalam pembangunan aplikasi, sambungan pangkalan data adalah pautan yang sangat penting, yang membawa interaksi data antara aplikasi dan pangkalan data. Pangkalan data Oracle ialah sistem pengurusan pangkalan data hubungan dengan fungsi berkuasa dan prestasi yang stabil Dalam pembangunan sebenar, kita perlu mahir dalam kaedah sambungan yang berbeza untuk berinteraksi dengan pangkalan data Oracle. Artikel ini akan memperkenalkan secara terperinci beberapa kaedah sambungan biasa pangkalan data Oracle dan menyediakan contoh kod yang sepadan untuk membantu pembaca memahami dan menggunakan dengan lebih baik.

Penggunaan mekanisme refleksi Java dalam rangka kerja Spring? Penggunaan mekanisme refleksi Java dalam rangka kerja Spring? Apr 15, 2024 pm 02:03 PM

Mekanisme refleksi Java digunakan secara meluas dalam rangka kerja Spring untuk aspek berikut: Suntikan ketergantungan: instantiating kacang dan suntikan kebergantungan melalui refleksi. Penukaran jenis: Tukar parameter permintaan kepada jenis parameter kaedah. Penyepaduan rangka kerja kegigihan: memetakan kelas entiti dan jadual pangkalan data. Sokongan AspectJ: memintas panggilan kaedah dan meningkatkan tingkah laku kod. Proksi Dinamik: Cipta objek proksi untuk meningkatkan kelakuan objek asal.

See all articles