1. Apakah itu transaksi Java
Konsep biasa ialah transaksi hanya berkaitan dengan pangkalan data.
Transaksi mesti mematuhi prinsip ACID yang ditetapkan oleh ISO/IEC. ACID ialah singkatan kepada atomicity, konsistensi, pengasingan dan ketahanan. Keatomisan transaksi bermakna bahawa sebarang kegagalan semasa pelaksanaan transaksi akan menyebabkan sebarang pengubahsuaian yang dibuat oleh transaksi menjadi tidak sah. Ketekalan bermakna apabila transaksi gagal, semua data yang terjejas oleh transaksi harus dipulihkan kepada keadaan sebelum transaksi dilaksanakan. Pengasingan bermakna bahawa pengubahsuaian kepada data semasa pelaksanaan transaksi tidak dapat dilihat oleh transaksi lain sebelum transaksi dilakukan. Kegigihan bermakna bahawa status data yang diserahkan harus betul apabila pelaksanaan transaksi gagal.
Dalam pemahaman orang awam, urus niaga ialah satu set unit operasi atom Dari perspektif pangkalan data, ia adalah satu set arahan SQL sama ada kesemuanya dilaksanakan dengan jayanya salah satu arahan atas sebab tertentu, pelaksanaan sebelumnya akan dibatalkan semua arahan yang diluluskan. Jawapan yang lebih mudah ialah: sama ada semua pelaksanaan berjaya, atau ia dibatalkan dan tidak dilaksanakan.
Memandangkan konsep transaksi berasal dari pangkalan data, apakah transaksi Java? Apa kaitannya?
Malah, jika sistem aplikasi Java ingin mengendalikan pangkalan data, ia dilaksanakan melalui JDBC. Penambahan, pengubahsuaian dan pemadaman semuanya dilaksanakan secara tidak langsung melalui kaedah yang sepadan, dan kawalan transaksi juga dipindahkan ke kod program Java dengan sewajarnya. Oleh itu, transaksi operasi pangkalan data secara tradisinya dipanggil transaksi Java.
2. Mengapa urus niaga Java diperlukan
Transaksi dicadangkan untuk menyelesaikan operasi keselamatan data sebenarnya untuk mengawal capaian data yang selamat. Berikut ialah contoh mudah: Sebagai contoh, dalam perniagaan pindahan wang melalui bank, akaun A ingin memindahkan 1,000 yuan daripada akaunnya sendiri ke akaun B. Baki akaun A hendaklah terlebih dahulu ditolak sebanyak 1,000 yuan, dan kemudian baki akaun B mesti dinaikkan sebanyak 1,000 yuan. Sekiranya terdapat masalah dalam rangkaian perantaraan, potongan 1,000 yuan daripada akaun A telah berakhir, dan operasi B gagal disebabkan gangguan rangkaian, maka keseluruhan perniagaan gagal, dan kawalan mesti dibuat untuk memerlukan pembatalan pemindahan perniagaan akaun A. Ini boleh memastikan ketepatan perniagaan Untuk menyelesaikan operasi ini, urus niaga diperlukan Pengurangan dana akaun A dan pertambahan dana akaun B digabungkan ke dalam satu transaksi, sama ada semua pelaksanaan berjaya, atau semua operasi dibatalkan. sekali gus mengekalkan keselamatan data .
3. Jenis transaksi Java
Terdapat tiga jenis transaksi Java: transaksi JDBC, transaksi JTA (Java Transaction API) dan transaksi kontena.
1. Transaksi JDBC
Transaksi JDBC dikawal oleh objek Sambungan. Antara muka Sambungan JDBC (java.sql.Connection) menyediakan dua mod transaksi: penyerahan automatik dan penyerahan manual. java.sql.Connection menyediakan kaedah berikut untuk mengawal urus niaga:
public void setAutoCommit(boolean)
public boolean getAutoCommit()
public void commit()
public void rollback()
Apabila menggunakan persempadanan urus niaga JDBC, anda boleh menggabungkan berbilang penyata SQL ke dalam satu transaksi. Satu kelemahan urus niaga JDBC ialah skop transaksi terhad kepada satu sambungan pangkalan data. Transaksi JDBC tidak boleh merangkumi berbilang pangkalan data.
2. Transaksi JTA (Java Transaction API)
JTA ialah API peringkat tinggi, bebas pelaksanaan dan bebas protokol Aplikasi dan pelayan aplikasi boleh menggunakan JTA untuk mengakses transaksi .
JTA membenarkan aplikasi melakukan transaksi yang diedarkan - mengakses dan mengemas kini data pada dua atau lebih sumber komputer rangkaian, yang boleh diedarkan merentas berbilang pangkalan data. Sokongan JTA pemandu JDBC sangat meningkatkan keupayaan capaian data.
Jika anda bercadang untuk menggunakan JTA untuk mengehadkan transaksi, anda memerlukan pemacu JDBC yang melaksanakan antara muka javax.sql.XADataSource, javax.sql.XAConnection dan javax.sql.XAResource. Pemacu yang melaksanakan antara muka ini akan dapat mengambil bahagian dalam transaksi JTA. Objek XADataSource ialah kilang untuk objek XAConnection. XAConnection s ialah sambungan JDBC yang mengambil bahagian dalam transaksi JTA.
Anda perlu menyediakan XADataSource menggunakan alat pentadbiran pelayan aplikasi. Panduan boleh didapati dalam dokumentasi untuk pelayan aplikasi dan pemandu JDBC.
Aplikasi J2EE menggunakan JNDI untuk menanyakan sumber data. Setelah aplikasi menemui objek sumber data, ia memanggil javax.sql.DataSource.getConnection() untuk mendapatkan sambungan ke pangkalan data.
Sambungan XA berbeza daripada sambungan bukan XA. Adalah penting untuk diingat bahawa sambungan XA mengambil bahagian dalam transaksi JTA. Ini bermakna sambungan XA tidak menyokong ciri autokomit JDBC. Pada masa yang sama, aplikasi tidak boleh memanggil java.sql.Connection.commit() atau java.sql.Connection.rollback() pada sambungan XA.
Sebaliknya, aplikasi harus menggunakan UserTransaction.begin(), UserTransaction.commit(), dan serTransaction.rollback().
3. Hal ehwal kontena
Transaksi kontena disediakan terutamanya oleh pelayan aplikasi J2EE. Transaksi kontena kebanyakannya diselesaikan berdasarkan JTA, yang merupakan pelaksanaan API yang agak kompleks berdasarkan JNDI. Berbanding dengan pengekodan untuk melaksanakan pengurusan transaksi JTA, kita boleh melengkapkan fungsi yang sama melalui mekanisme pengurusan transaksi kontena (CMT) yang disediakan oleh kontena EJB. Fungsi ini disediakan oleh pelayan aplikasi J2EE. Ini membolehkan kami hanya menentukan kaedah yang hendak ditambahkan pada urus niaga, dan setelah dinyatakan, bekas akan menguruskan tugas pengurusan urus niaga. Ini adalah penyelesaian kejuruteraan awam kami, kerana dengan cara ini kami boleh mengecualikan kod transaksi daripada pengekodan logik, dan pada masa yang sama menyerahkan semua kesulitan kepada bekas J2EE untuk diselesaikan. Manfaat lain menggunakan EJB CMT ialah pengaturcara tidak perlu mengambil berat tentang pengekodan API JTA Walau bagaimanapun, secara teori kita mesti menggunakan EJB.
Empat jenis perbezaan transaksi Java
1 Had kawalan transaksi JDBC adalah dalam sambungan pangkalan data, tetapi penggunaannya mudah.
2. Urus niaga JTA adalah hebat Transaksi boleh merangkumi berbilang pangkalan data atau berbilang DAO, dan penggunaannya juga agak rumit.
3. Urus niaga kontena terutamanya merujuk kepada pengurusan transaksi yang disediakan oleh pelayan aplikasi J2EE dan terhad kepada aplikasi EJB.
Atas ialah kandungan terperinci Bagaimana untuk memahami prinsip perkara Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!