การใช้ธุรกรรม Java อย่างง่าย
กิจการ Java จะถูกถามในระหว่างการสัมภาษณ์
ในระหว่างการสัมภาษณ์สิ่งแรกที่เราต้องตอบคือ: ธุรกรรมสามารถมั่นใจได้ถึงความสมบูรณ์และความสอดคล้องของข้อมูล
หากทักษะนั้นลึกซึ้งยิ่งขึ้น: เพียงแค่พูดคุยเกี่ยวกับหลักการบางอย่าง (ไม่ได้ส่งงานก่อนที่งานจะเริ่มและส่งงานหลังจากงานทั้งหมดเสร็จสิ้น
หากงานถูกตัดการเชื่อมต่อตรงกลางการย้อนกลับจะดำเนินการและงานก่อนหน้านี้จะถูกยกเลิก) และตัวอย่างง่ายๆจะได้รับ (เช่นปัญหาการออมและถอนเงิน
ตัวอย่างเช่น: ธนาคารโอนเงินระหว่างสองบัญชีโอนจากบัญชี A ไปยังบัญชี B สำหรับ 1,000 หยวน ระบบแรกลดบัญชี A ลง 1,000 หยวนแล้วเพิ่ม 1,000 หยวนลงในบัญชี B หากการประหารชีวิตทั้งหมดสำเร็จฐานข้อมูลนั้นสอดคล้องกัน หากมีเพียงการปรับเปลี่ยนจำนวนบัญชี A จะเสร็จสมบูรณ์โดยไม่เพิ่มจำนวนบัญชี B ฐานข้อมูลจะอยู่ในสถานะที่ไม่สอดคล้องกันและการดำเนินการก่อนหน้านี้จะต้องถูกยกเลิก -
บทความนี้กล่าวถึงการทำธุรกรรม Java สั้น ๆ เมื่อเราถามเกี่ยวกับธุรกรรม Java เราจำเป็นต้องรู้ว่าสิ่งนี้เกี่ยวข้องกับฐานข้อมูล
หนึ่ง. มาดูรหัสง่าย ๆ ก่อน
ใช้ JDBC เพื่อดำเนินการประมวลผลธุรกรรม
Public Int Delete (int sid) {// คลาสที่ใช้ฐานข้อมูลการเชื่อมต่อฐานข้อมูล databaseconnection dbc = databaseconnection ใหม่ (); // รับการเชื่อมต่อการเชื่อมต่อวัตถุ con = dbc.getConnection (); ลอง {con.setAutocommit (false); // เปลี่ยนวิธีการเริ่มต้นของการทำธุรกรรม jdbc dbc.executeupdate ("ลบจาก Xiao โดยที่ id =" + sid); dbc.executeupdate ("ลบจาก xiao_content โดยที่ id =" + sid); dbc.executeupdate ("ลบจาก Xiao_affix โดยที่ bylawid =" + sid); con.Commit (); // commit transaction jdbc con.setautocommit (จริง); // คืนค่าวิธีการเริ่มต้นของการทำธุรกรรม JDBC dbc.close (); กลับ 1; } catch (exc Exception) {con.rollback (); // rolle ย้อนกลับ JDBC ธุรกรรม dbc.close (); กลับ -1; - รหัสข้างต้นเป็นการดำเนินการอย่างง่ายของธุรกรรม Java
การดำเนินการลบสามครั้งข้างต้นจะดำเนินการ ตราบใดที่หนึ่งล้มเหลวงานจะถูกย้อนกลับซึ่งเทียบเท่ากับความสำเร็จด้วยกันหรือไม่มีอะไรทำ
หากไม่มีการจัดการธุรกรรมการดำเนินการก่อนหน้านี้จะได้รับการปรับปรุงในฐานข้อมูลทันที
ออกจากงานที่ตามมาทุกที่ที่การดำเนินการล้มเหลวและความสอดคล้องของข้อมูลไม่สามารถรับประกันได้
สอง. แนวคิดพื้นฐานของการทำธุรกรรม Java
Atomicity: การทำธุรกรรมเป็นการดำเนินการที่สมบูรณ์ การดำเนินการของธุรกรรมนั้นแยกกันไม่ออก (อะตอม);
ไม่ว่าจะดำเนินการหรือไม่มีของพวกเขา
ความสอดคล้อง: เมื่อการทำธุรกรรมเสร็จสิ้นข้อมูลจะต้องอยู่ในสถานะที่สอดคล้องกัน
การแยก: ธุรกรรมที่เกิดขึ้นพร้อมกันทั้งหมดที่แก้ไขข้อมูลถูกแยกออกจากกันซึ่งหมายความว่าการทำธุรกรรมจะต้องเป็นอิสระ
ไม่ควรขึ้นอยู่กับหรือส่งผลกระทบต่อธุรกรรมอื่น ๆ ในทางใดทางหนึ่ง (ความทนทาน): หลังจากการทำธุรกรรมเสร็จสมบูรณ์การปรับเปลี่ยนฐานข้อมูลจะได้รับการดูแลอย่างถาวรและบันทึกการทำธุรกรรมสามารถรักษาความถาวรของธุรกรรมได้
คำอธิบายการประมวลผลธุรกรรม Java: หากคุณดำเนินการหลายครั้งในฐานข้อมูลการดำเนินการหรือขั้นตอนแต่ละขั้นตอนคือการทำธุรกรรม
หากการดำเนินการฐานข้อมูลไม่ได้ดำเนินการในขั้นตอนที่แน่นอนหรือข้อยกเว้นเกิดขึ้นส่งผลให้เกิดการทำธุรกรรมล้มเหลวดังนั้นการทำธุรกรรมบางอย่างจะถูกดำเนินการและบางอย่างไม่ได้ดำเนินการ
สิ่งนี้นำไปสู่การย้อนกลับธุรกรรมและยกเลิกการดำเนินการก่อนหน้านี้ ...
ในการดำเนินการฐานข้อมูลการทำธุรกรรมหมายถึงหน่วยงานที่แยกออกไม่ได้ซึ่งประกอบด้วยคำสั่ง SQL หนึ่งคำหรือมากกว่าที่อัปเดตฐานข้อมูล
เฉพาะเมื่อการดำเนินการทั้งหมดในการทำธุรกรรมเสร็จสมบูรณ์ตามปกติสามารถส่งธุรกรรมทั้งหมดไปยังฐานข้อมูลได้ หากการดำเนินการยังไม่เสร็จสมบูรณ์
การทำธุรกรรมทั้งหมดจะต้องเพิกถอน
ตัวอย่างเช่นในธุรกรรมการโอนเงินของธนาคารสมมติว่าจางซานถ่ายโอน 1,000 หยวนจากบัญชีของเขาไปยังบัญชีของ Li Si ข้อความ SQL ที่เกี่ยวข้องมีดังนี้:
อัปเดตบัญชีชุดเงิน = monery-1000 โดยที่ชื่อ = 'จางซาน'
อัปเดตบัญชีตั้งค่าเงิน = monery+1,000 โดยที่ name = 'lisi'
ข้อความทั้งสองนี้จะต้องดำเนินการเป็นธุรกรรมที่เสร็จสมบูรณ์ การทำธุรกรรมนี้สามารถส่งได้เมื่อทั้งคู่ดำเนินการสำเร็จเท่านั้น
หากประโยคหนึ่งล้มเหลวการทำธุรกรรมทั้งหมดจะต้องถูกเพิกถอน
มี 3 วิธีในการควบคุมธุรกรรมในคลาสการเชื่อมต่อ:
(1) setautocommit (boolean autocommit): ตั้งค่าว่าจะส่งธุรกรรมโดยอัตโนมัติหรือไม่
(2) commit (); ให้สัญญา(); ทำธุรกรรม
(3) การย้อนกลับ (); เลิกทำธุรกรรม
ใน JDBC API กรณีเริ่มต้นคือการทำธุรกรรมโดยอัตโนมัตินั่นคือการอัปเดตแต่ละฐานข้อมูลแสดงถึงการทำธุรกรรม
หลังจากการดำเนินการสำเร็จระบบจะเรียกใช้ () โดยอัตโนมัติเพื่อกระทำมิฉะนั้นจะย้อนกลับ () จะถูกเรียกให้ยกเลิกการทำธุรกรรม
ใน JDBC API การส่งธุรกรรมอัตโนมัติสามารถห้ามได้โดยการเรียก setautocommit (เท็จ)
จากนั้นคุณสามารถใช้คำสั่ง SQL หลายรายการที่อัปเดตฐานข้อมูลเป็นธุรกรรม หลังจากการดำเนินการทั้งหมดเสร็จสิ้นแล้ว commit () จะถูกเรียกให้ส่งโดยรวม
หากหนึ่งในการดำเนินการ SQL ล้มเหลววิธีการ commit () จะไม่ถูกดำเนินการ แต่จะสร้าง Sqlexception ที่สอดคล้องกัน
ในเวลานี้คุณสามารถตรวจสอบข้อยกเว้นในบล็อกรหัสเรียกวิธีการย้อนกลับ () เพื่อยกเลิกการทำธุรกรรม
โดยทั่วไปนักพัฒนาที่เชี่ยวชาญในการพัฒนาฐานข้อมูลจะต้องมีความเข้าใจอย่างลึกซึ้งเกี่ยวกับการทำธุรกรรม
แต่โปรแกรมเมอร์เฉลี่ยไม่จำเป็นต้องใช้เวลามากในเรื่องนี้ เพียงแค่มีความเข้าใจถึงผลกระทบทั่วไป
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!