আমার নীচের মতো প্রশ্ন রয়েছে:
- এই দুইয়ের পার্থক্য কী?
- এই দুটিই কি সমস্ত ডাটাবেস দ্বারা সমর্থিত?
- জেপিএ ট্রানজেকশন ম্যানেজার এবং জেটিএ ট্রানজেকশন ম্যানেজার কি আলাদা?
উত্তর:
জেপিএ বাস্তবায়নের ক্ষেত্রে ( RESOURCE_LOCAL
) নিজেরাই লেনদেন পরিচালনা করতে বা অ্যাপ্লিকেশন সার্ভারের জেটিএ বাস্তবায়ন দ্বারা পরিচালিত করার পছন্দ রয়েছে ।
বেশিরভাগ ক্ষেত্রে, RESOURCE_LOCAL ঠিক আছে। এটি প্রাথমিক জেডিবিসি-স্তরের লেনদেন ব্যবহার করবে। খারাপ দিকটি হ'ল লেনদেনটি জেপিএ অধ্যবসায়ী ইউনিটের স্থানীয়, সুতরাং আপনি যদি এমন একটি লেনদেন চান যা একাধিক স্থায়ীত্ব ইউনিট (বা অন্যান্য ডাটাবেসগুলি) জুড়ে, তবে RESOURCE_LOCAL যথেষ্ট ভাল নাও হতে পারে।
জেটিএ জেএমএস এবং জেসিএর মতো সিস্টেমে লেনদেন পরিচালনার জন্যও ব্যবহৃত হয়, তবে এটি আমাদের বেশিরভাগের পক্ষে মোটামুটি বহিরাগত ব্যবহার।
জেটিএ ব্যবহার করার জন্য আপনার অ্যাপ্লিকেশন সার্ভারে এটির জন্য সহায়তা এবং জেডিবিসি ড্রাইভারের সহায়তাও প্রয়োজন।
অন্যান্য উত্তরের সংযোজন হিসাবে
এখানে একটি হল উদ্ধৃতাংশ অত্যন্ত দরকারী নিবন্ধ (প্রকাশিত থেকে অ্যাপাচি TomEE ওয়েবসাইট), যা সাহায্যের ওপি প্রথম প্রশ্ন (নিবন্ধটি লিংক নিচে) উত্তর দিতে পারেন।
RESOURCE_LOCAL এবং জেটিএ দৃistence়তা প্রসঙ্গে তুলনা করা
সঙ্গে <অধ্যবসায় ইউনিট লেনদেন-টাইপ = "RESOURCE_LOCAL"> আপনি EntityManager (PersistenceContext / cache) তৈরি এবং ট্র্যাকিং জন্য দায়ী ...
- সত্ত্বা ব্যবস্থাপনার জন্য আপনাকে অবশ্যই অ্যান্টিটি ম্যানেজারফ্যাক্টরিটি ব্যবহার করতে হবে
- ফলে EntityManager উদাহরণস্বরূপ হয় একটি PersistenceContext / cache
- একটি অ্যান্টিটি ম্যানেজারফ্যাক্টরিটি কেবলমাত্র @ পার্সনস্টিভেশন টীকাটি (কেবলমাত্র @ পার্সিস্টিস্ট কনটেক্সট নয়) এর মাধ্যমে ইনজেকশনের ব্যবস্থা করা যেতে পারে
- তুমি না @PersistenceContext ব্যবহার করতে টাইপ একটি ইউনিট পড়ুন করার অনুমতি দেওয়া RESOURCE_LOCAL
- আপনার অ্যান্টিটিম্যানেজারে প্রতিটি কল শুরু করতে / প্রতিশ্রুতিবদ্ধ করতে আপনাকে অবশ্যই অ্যান্টিটি ট্রান্সজেকশন API ব্যবহার করতে হবে
- কলিং entityManagerFactory.createEntityManager () দুইবার ফলাফল দুই পৃথক EntityManager দৃষ্টান্ত এবং তজ্জন্য দুই পৃথক PersistenceContexts / ক্যাশে।
- অ্যান্টিটি ম্যানেজারের একাধিক উদাহরণ ব্যবহার করা প্রায়শই ভাল ধারণা নয় (আপনি যদি প্রথমটি ধ্বংস না করেন তবে দ্বিতীয়টি তৈরি করবেন না)
সঙ্গে <অধ্যবসায় ইউনিট লেনদেন-টাইপ = "JTA"> CONTAINER EntityManager (PersistenceContext / cache) তৈরি এবং ট্র্যাকিং কি করতে হবে ...
- আপনি করতে পারবেন না ব্যবহার EntityManagerFactory একটি EntityManager পেতে
- আপনি কেবল ধারক দ্বারা সরবরাহ করা একটি সত্ত্বা ম্যানেজার পেতে পারেন
- একটি অ্যান্টিটি ম্যানেজারটি কেবলমাত্র @ পার্সিস্টিস্ট কনটেক্সট টিকা র মাধ্যমে ইনজেকশনের ব্যবস্থা করা যায় (@ পার্সারস্টিউনিট নয়)
- তুমি না @PersistenceUnit ব্যবহার করতে টাইপ JTA একটি ইউনিট পড়ুন করার অনুমতি দেওয়া
- EntityManager ধারক কর্তৃক প্রদত্ত একটি হল রেফারেন্স একটি JTA লেনদেন সঙ্গে যুক্ত PersistenceContext / ক্যাশে করা হয়।
- যদি কোনও জেটিএ লেনদেন চলমান না থাকে তবে অধ্যয়নপরিচয় / ক্যাশে নেই বলে অ্যান্টিটি ম্যানেজার ব্যবহার করা যাবে না ।
- একটি EntityManager রেফারেন্স থাকা প্রত্যেকের কাছেই একই ইউনিট মধ্যে একই লেনদেনে স্বয়ংক্রিয়ভাবে একটি রেফারেন্স থাকবে একই PersistenceContext / cache
- জেটিএ প্রতিশ্রুতিবদ্ধ সময়ে পার্সিস্টিস্টনসেক্সট / ক্যাশে ফ্লাশ এবং ক্লিয়ার করা হয়
জাভা অধ্যবসায় এপিআই জানতে আগ্রহী যে কেউ - নিজের একটা উপকার করবেন এবং এখানে সম্পূর্ণ নিবন্ধ পড়ুন দয়া করে: JPA ধারণা: JPA 101 ।
transaction-type=RESOURCE_LOCAL
এবং @PersistenceContext
এবং @Transactional
স্প্রিং দ্বারা পরিচালিত
রিসোর্স_লোকাল এবং জেটিএ হ'ল লেনদেন পরিচালক (লেনদেন করার পদ্ধতি)। এটি ডাটাবেসের সম্পত্তি নয় তবে লেনদেনের সমন্বয়ের জন্য দায়বদ্ধ উপাদান। জেপিএ এবং জেটিএ লেনদেন পরিচালকরা আলাদা are জেপিএ লেনদেন পরিচালক জেপিএ লেনদেনের জন্য দায়ী এবং আপনি যদি কেবল জেপিএ লেনদেন করেন তবে আপনি একটি ব্যবহার করতে চান। জেটিএ ট্রানজেকশন ম্যানেজার হ'ল সাধারণ উদ্দেশ্যে লেনদেন পরিচালক এবং লেনদেনে জেএমএসের সারিগুলির মতো অন্যান্য সংস্থানগুলিতে তালিকাভুক্ত করতে পারেন। সাধারণত জাভা ইই পাত্রে ইজেবি, জেপিএ সত্তা ইত্যাদির জন্য একটি জেটিএ লেনদেন পরিচালক নিয়োগ করে
রিসোর্স_লোকাল বনাম জেটিএ এর স্থানীয় লেনদেন বনাম বৈশ্বিক লেনদেন সম্পর্কে। এটি সম্পর্কে আমরা একক লেনদেনের অধীনে একাধিক সংস্থান পরিচালনা করতে পারি।
সিএমটি বনাম বিএমটি এর বিষয়ে কে লেনদেন খুলছে এবং বন্ধ করছে - অ্যাপ্লিকেশন বিকাশকারী বা অ্যাপ্লিকেশন সার্ভার।