استخدام بسيط لمعاملات Java
سيتم طلب شؤون جافا خلال بعض المقابلات.
خلال المقابلة ، أول ما نحتاج إلى الإجابة عليه هو: يمكن للمعاملات ضمان سلامة واتساق البيانات.
إذا كانت المهارات أعمق: فقط تحدث عن بعض المبادئ (تعيين لا تقدم المهام قبل بدء المهمة ، وتقديم المهام بعد اكتمال جميع المهام.
إذا تم فصل المهمة في الوسط ، فسيتم تنفيذ التراجع وسيتم إلغاء المهمة السابقة) ، وسيتم تقديم مثال بسيط (مثل مسألة توفير الأموال وسحبها.
على سبيل المثال: يقوم البنك بنقل الأموال بين حسابين ، ينقل من الحساب A إلى الحساب B مقابل 1000 يوان. يقوم النظام أولاً بتخفيض الحساب A بمقدار 1000 يوان ، ثم يضيف 1000 يوان إلى الحساب B. إذا نجحت جميع عمليات الإعدام ، تكون قاعدة البيانات في الاتساق ؛ إذا تم إكمال تعديل مبلغ الحساب A فقط دون زيادة مبلغ الحساب B ، فإن قاعدة البيانات في حالة غير متسقة ، ويجب إلغاء العملية السابقة. )
يناقش هذا المقال بإيجاز معاملات Java. عندما نسأل عن معاملات Java ، نحتاج إلى معرفة أن هذا مرتبط بقواعد البيانات.
واحد. دعونا نلقي نظرة على رمز بسيط أولاً
استخدم JDBC لإجراء معالجة المعاملات
public int delete (int SID) {// class التي تنفذ databaseConnection connection 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 () ؛ // Compling JDBC Transaction Con.SetAutocommit (true) ؛ // استعادة طريقة الالتزام الافتراضية لمعاملة JDBC DBC.Close () ؛ العودة 1 ؛ } catch (استثناء exc) {con.rollback () ؛ // rolle back jdbc Transaction dbc.close () ؛ العودة -1 ؛ }} الرمز أعلاه هو تنفيذ بسيط لمعاملة Java.
يتم إجراء ثلاث مرات أعلاه من عمليات الحذف. طالما فشل المرء ، سيتم التراجع عن المهمة ، وهو ما يعادل إما النجاح معًا أو لم يتم القيام بأي شيء.
إذا لم يكن هناك إدارة معاملات ، فسيتم تحديث التنفيذ السابق في قاعدة البيانات على الفور.
الخروج من المهام اللاحقة أينما فشل التنفيذ ، ولا يمكن ضمان اتساق البيانات.
اثنين. المفهوم الأساسي لمعاملات Java
Atomicity: المعاملة هي عملية كاملة. عمليات المعاملة لا تنفصل (ذرية) ؛
إما تنفيذها أو لا شيء منهم
الاتساق: عند اكتمال المعاملة ، يجب أن تكون البيانات في حالة متسقة.
العزلة: يتم عزل جميع المعاملات المتزامنة التي تعدل البيانات عن بعضها البعض ، مما يعني أن المعاملة يجب أن تكون مستقلة.
لا ينبغي أن يعتمد على المعاملات الأخرى أو تؤثر عليها بأي شكل من الأشكال (المتانة): بعد اكتمال معاملة ، يتم الحفاظ على تعديلاتها على قاعدة البيانات بشكل دائم ، ويمكن أن يحافظ سجل المعاملات على دائمة المعاملة.
وصف معالجة معاملات Java: إذا قمت بإجراء عمليات متعددة على قاعدة البيانات ، فإن كل تنفيذ أو خطوة هو معاملة.
إذا لم يتم تنفيذ عملية قاعدة البيانات في خطوة معينة أو حدوث استثناء ، مما يؤدي إلى فشل المعاملة ، لذلك يتم تنفيذ بعض المعاملات ولا يتم تنفيذ بعضها.
هذا يؤدي إلى تراجع المعاملات وإلغاء العمليات السابقة ...
في عملية قاعدة البيانات ، تشير المعاملة إلى وحدة عمل لا ينفصل عن واحد أو أكثر من عبارات SQL التي تحديث قاعدة البيانات.
فقط عند إكمال جميع العمليات في المعاملة ، يمكن عادةً إرسال المعاملة بأكملها إلى قاعدة البيانات. إذا لم تكتمل عملية ،
يجب إلغاء الصفقة بأكملها.
على سبيل المثال ، في معاملات التحويل المصرفي ، لنفترض أن Zhang San ينقل 1000 يوان من حسابه إلى حساب Li Si ، فإن بيانات SQL ذات الصلة هي كما يلي:
تحديث حساب ضبط المال = monery-1000 حيث name = 'Zhangsan'
تحديث ضبط الحساب الأموال = monery+1000 حيث name = 'lisi'
يجب معالجة هذين البيانين كمعاملة مكتملة. لا يمكن تقديم هذه الصفقة إلا عند تنفيذ كلاهما بنجاح.
إذا فشلت جملة واحدة ، فيجب إلغاء المعاملة بأكملها.
هناك 3 طرق للتحكم في المعاملات في فئة الاتصال:
(1) Setautocommit (Ooolean Autocommit): تعيين ما إذا كان سيتم إرسال المعاملات تلقائيًا ؛
(2) الالتزام () ؛ يقترف()؛ ارتكاب المعاملة
(3) التراجع () ؛ التراجع عن المعاملة.
في API JDBC ، تتمثل الحالة الافتراضية في ارتكاب المعاملات تلقائيًا ، أي أن كل تحديث لقاعدة البيانات يمثل معاملة.
بعد نجاح العملية ، سيتم استدعاء النظام تلقائيًا Commice () للالتزام ، وإلا سيتم استدعاء Rollback () للتراجع عن المعاملة.
في واجهة برمجة تطبيقات JDBC ، يمكن حظر تقديم المعاملات التلقائية عن طريق استدعاء setautocommit (خطأ).
بعد ذلك ، يمكنك استخدام عبارات SQL متعددة تحديث قاعدة البيانات كمعاملة. بعد اكتمال جميع العمليات ، يتم استدعاء الالتزام () لتقديم التقديم الكلي.
إذا فشل إحدى عمليات SQL ، فلن يتم تنفيذ طريقة الالتزام () ، ولكن سيتم إنشاء sqlexception المقابلة.
في هذا الوقت ، يمكنك التقاط الاستثناء في كتلة الكود ، استدعاء طريقة التراجع () للتراجع عن المعاملة.
بشكل عام ، يجب أن يكون للمطورين الذين يتخصصون في تطوير قواعد البيانات فهم عميق للمعاملات.
لكن المبرمج العادي لا يحتاج إلى قضاء الكثير من الوقت في هذا. مجرد فهم للتأثير العام.
شكرا لك على القراءة ، آمل أن تساعدك. شكرا لك على دعمك لهذا الموقع!