যদি কেউ এই টীকাকে কী ব্যাখ্যা করতে পারে এবং কখন আমরা এটি ব্যবহার করি:
@Transactional(propagation=Propagation.REQUIRED)
ধন্যবাদ
যদি কেউ এই টীকাকে কী ব্যাখ্যা করতে পারে এবং কখন আমরা এটি ব্যবহার করি:
@Transactional(propagation=Propagation.REQUIRED)
ধন্যবাদ
উত্তর:
প্রচারের সেটিংটি যখন PROPAGATION_REQUIRED হয়, সেটিংটি প্রয়োগ করা হয় এমন প্রতিটি পদ্ধতির জন্য একটি যৌক্তিক লেনদেনের সুযোগ তৈরি করা হয়। এই জাতীয় প্রতিটি লজিক্যাল লেনদেনের সুযোগটি অভ্যন্তরীণ লেনদেনের সুযোগ থেকে যৌক্তিকভাবে স্বতন্ত্রভাবে বহিরাগত লেনদেনের সুযোগটি স্বতন্ত্রভাবে রোলব্যাক-শুধুমাত্র স্থিতি নির্ধারণ করতে পারে। অবশ্যই, প্রমিত PROPAGATION_REQUIRED আচরণের ক্ষেত্রে, এই সমস্ত স্কোপগুলি একই শারীরিক লেনদেনে ম্যাপ করা হবে। সুতরাং কেবলমাত্র অভ্যন্তরীণ লেনদেনের সুযোগের মধ্যে সেট করা রোলব্যাক কেবলমাত্র বাইরের লেনদেনের প্রতিশ্রুতিবদ্ধ হওয়ার সুযোগকে প্রভাবিত করে (যেমনটি আপনি এটি আশা করেছিলেন)।
http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/transaction.html
আপনার যদি স্প্রিং ডক্সে সরবরাহ করা থাকে তার বাইরে ব্যবহারের কোনও সাধারণ ব্যক্তির ব্যাখ্যা প্রয়োজন
এই কোডটি বিবেচনা করুন ...
class Service {
@Transactional(propagation=Propagation.REQUIRED)
public void doSomething() {
// access a database using a DAO
}
}
যখন doSomething () বলা হয় তখন এটি জানে যে এটি কার্যকর করার আগে এটি ডাটাবেসে একটি লেনদেন শুরু করতে হবে। যদি এই পদ্ধতির কলকারী ইতিমধ্যে কোনও লেনদেন শুরু করে থাকে তবে এই পদ্ধতিটি একই শারীরিক ব্যবহার করবে বর্তমান ডাটাবেস সংযোগে লেনদেন ।
এই @Transactional
টীকাটি আপনার কোডটি বলার একটি মাধ্যম সরবরাহ করে যখন এটি কার্যকর করে যে এটি আবশ্যক কোনও লেনদেন হবে। এটি একটি ছাড়া চলবে না, সুতরাং আপনি আপনার কোডে এই ধারণাটি তৈরি করতে পারেন যে আপনি আপনার ডাটাবেসে অসম্পূর্ণ ডেটা রেখে যাবেন না বা যদি কোনও ব্যতিক্রম ঘটে তবে কিছু পরিষ্কার করতে হবে।
লেনদেন পরিচালনা একটি মোটামুটি জটিল বিষয় তাই আশা করি এই সরলীকৃত উত্তরটি সহায়ক
@Transactional
আপনার পরিষেবা স্তরটিতে যুক্ত করেছেন তবে @Transactional
সেই লেনদেনের মধ্যে ডেকে নেওয়া ডিএও পদ্ধতিগুলিতেও যুক্ত করার দরকার নেই।
doSomething()
কোনও @ লেনদেন ছাড়াই অন্য নেস্টেড পদ্ধতিতে আহ্বান করে তবে এই একই লেনদেনটি সেই অনুরোধ পদ্ধতিতেও প্রযোজ্য হবে?
স্প্রিং অ্যাপ্লিকেশনগুলিতে, আপনি @ ট্রানজেকশনাল (প্রচার = প্রসারণ.আরএকআইআরইডি)<tx:annotation-driven/>
দিয়ে কোনও শ্রেণি / পদ্ধতিটি ব্যবহার করে টিকাদান ভিত্তিক লেনদেন সহায়তা সমর্থন করে যদি স্প্রিং ফ্রেমওয়ার্কটি একটি লেনদেন শুরু করে এবং পদ্ধতিটি কার্যকর করে এবং লেনদেনের প্রতিশ্রুতি দেয়। যদি কোনও রানটাইম এক্সেপশন হয় তবে লেনদেনটি আবার ঘুরিয়ে দেওয়া হবে।
প্রকৃতপক্ষে প্রচার = প্রচার REআরএকআইআরইডিটি ডিফল্ট প্রচারের স্তর, আপনার এটি স্পষ্টভাবে উল্লেখ করার দরকার নেই।
আরও তথ্যের জন্য: http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/transaction.html#transaction-declarative-annotations
লেনদেন পরিচালনার জন্য গৃহীত বিভিন্ন লেনদেনের সেটিংস এবং আচরণগুলি বোঝার জন্য REQUIRED
,ISOLATION
ইত্যাদি আপনি লেনদেনের ব্যবস্থাপনা নিজেই মূলসূত্র বুঝতে হবে।
ব্যাখ্যার জন্য আরও ট্র্যাস্যাকশন পরিচালনা পড়ুন ।