প্রথমত, লেনদেন পরিচালনার ব্যবস্থা ডিএও লেয়ারে না করে সার্ভিস লেয়ারে করা উচিত কারণ এতে প্রচুর পারফরম্যান্স ওভারহেড তৈরি হয় (প্রতিটি ভিন্ন পদ্ধতিতে যথাযথ লেনদেনের বিচ্ছিন্নতা স্তর এবং বংশ বিস্তারকে মোকাবেলা করতে)। এছাড়াও, কাজের ইউনিটের পরিধিটি ডেটা অ্যাক্সেস স্তরের পরিবর্তে পরিষেবা স্তর থেকে আসে: 2 বা ততোধিক ডিএও মোকাবেলা করতে হবে এমন একটি ব্যবসায়িক প্রক্রিয়া সম্পাদনের কথা ভাবুন।
ইন্টারনেটে প্রচুর আলোচনা রয়েছে যা এখানে , এখানে এবং এখানে যেমন নির্দেশ করে ।
যাইহোক, এটি একটি ইন্টারভিউ যেহেতু আসুন প্রশ্নটি গ্রহণ করুন। আমার দৃষ্টিকোণ থেকে, আপনি @Transactional
উভয় পদ্ধতিতে টিকা (বা এক্সএমএল কনফিগারেশন) এবং REQUIRED
মান সহ লেনদেনের প্রচার সহ ব্যবহার করবেন । এইভাবে, যখন এই পদ্ধতিরগুলির কোনওটি চালু করা হয় এবং যদি কোনও পূর্ববর্তী লেনদেন বিদ্যমান না থাকে, একটি নতুন লেনদেন তৈরি হবে:
@Transactional
class MyDAO {
@Transactional(propagation = REQUIRED)
public void foo() {
}
@Transactional(propagation = REQUIRED)
public void bar() {
}
}
foo()
এবংbar()
একই লেনদেনটি ভাগ করে নেওয়া এবং যদি 1 ব্যর্থ হয় তবে আরও 1 টিও রোলব্যাক করবে? আপনি কিছু ব্যাখ্যা দিতে পারেন?