"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > स्प्रिंग बूट में @Transactional को समझना

स्प्रिंग बूट में @Transactional को समझना

2024-07-29 को प्रकाशित
ब्राउज़ करें:353

Understanding @Transactional in Spring Boot

स्प्रिंग बूट में लेनदेन का प्रबंधन @Transactional एनोटेशन का उपयोग करके किया जा सकता है। इस ब्लॉग पोस्ट में, हम यह पता लगाएंगे कि डेटा स्थिरता सुनिश्चित करने और आपके स्प्रिंग बूट अनुप्रयोगों में त्रुटि प्रबंधन को सरल बनाने के लिए @Transactional का उपयोग कैसे करें।

1. मूल उपयोग

@ट्रांसेक्शनल का उपयोग करने के लिए, आप इसे आम तौर पर एक सेवा वर्ग के तरीकों पर रखते हैं जहां आप लेनदेन संबंधी व्यवहार चाहते हैं।

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 स्प्रिंग बूट का उपयोग आपको लेनदेन को घोषणात्मक रूप से प्रबंधित करने की अनुमति देता है, यह निर्दिष्ट करते हुए कि आप लेनदेन को विभिन्न परिदृश्यों में कैसे व्यवहार करना चाहते हैं। यह डेटा स्थिरता सुनिश्चित करने में मदद करता है और आपके अनुप्रयोगों में त्रुटि प्रबंधन को सरल बनाता है।

संदर्भ

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/understandard-transactional-in-spring-boot-8ce?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3