"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > فهم @ المعاملات في Spring Boot

فهم @ المعاملات في Spring Boot

تم النشر بتاريخ 2024-07-29
تصفح:920

Understanding @Transactional in Spring Boot

يمكن إجراء إدارة المعاملات في Spring Boot باستخدام التعليق التوضيحيTransactional. في منشور المدونة هذا، سنستكشف كيفية استخدام @Transactional لضمان اتساق البيانات وتبسيط معالجة الأخطاء في تطبيقات التشغيل الربيعي.

1. الاستخدام الأساسي

لاستخدام @Transactional، عادةً ما تضعه على أساليب فئة الخدمة حيث تريد سلوك المعاملات.

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserService{

    @Transactional
    public void createUser() {
        // enter your transactional code here
    }
}

2. مستويات الانتشار والعزل

يمكنك تحديد مستويات الانتشار والعزل للمعاملة للتحكم في كيفية تصرف المعاملة:

  • النشر: يحدد كيفية تصرف المعاملة عندما تكون المعاملة الحالية قيد التشغيل بالفعل.

  • العزل: يحدد مستوى رؤية البيانات للمعاملة.

@Transactional(propagation = Propagation.REQUIRED, 
              isolation = Isolation.READ_COMMITTED)
public void createUser() {
    // enter your transactional code here
}

3. قواعد التراجع

يمكنك تحديد الاستثناءات التي يجب أن تؤدي إلى التراجع:

@Transactional(rollbackFor = Exception.class)
public void createUser() {
    // your transactional code here
}

4. المعاملات للقراءة فقط

إذا كانت طريقتك تقرأ البيانات فقط ولا تنفذ أي عمليات كتابة، فيمكنك وضع علامة عليها للقراءة فقط لتحسين الأداء:

@Transactional(readOnly = true)
public void getUser() {
    // your read-only code here
}

5. المعاملات على الطبقات

يمكنك أيضًا وضع @Transactional على مستوى الفصل لتطبيقه على جميع الأساليب في الفصل:

@Service
@Transactional
public class UserService {

    public void getUser() {
        // transactional code
    }

    public void createUser() {
        // transactional code
    }
}

خدمة نموذجية مع طرق المعاملات

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserService {

    @Transactional
    public void saveUser() {
        // code to save data
    }

    @Transactional(readOnly = true)
    public void fetchUser() {
        // code to fetch data
    }

    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void newTransaction() {
        // code to execute in a new transaction
    }

    @Transactional(rollbackFor = {CustomException.class})
    public void performWithRollback() {
        // risky code that may throw CustomException
    }
}

ملخص

يسمح لك استخدام @Transactional Spring Boot بإدارة المعاملات بشكل تصريحي، مع تحديد بالضبط كيف تريد أن تتصرف المعاملات في سيناريوهات مختلفة. ويساعد ذلك على ضمان اتساق البيانات وتبسيط معالجة الأخطاء في تطبيقاتك.

مراجع

https://www.baeldung.com/spring-transactions-read-only

https://docs.spring.io/spring-framework/reference/data-access/transaction/declarative/annotations.html

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/Transactional.html

جيثب: https://github.com/tharindu1998/transactional-blog

بيان الافراج تم نشر هذه المقالة على: https://dev.to/tharindufdo/understanding-transactional-in-spring-boot-8ce?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3