RESOURCE_LOCAL বা জেটিএ হিসাবে দৃistence়তা ইউনিট?


87

আমার নীচের মতো প্রশ্ন রয়েছে:

  1. এই দুইয়ের পার্থক্য কী?
  2. এই দুটিই কি সমস্ত ডাটাবেস দ্বারা সমর্থিত?
  3. জেপিএ ট্রানজেকশন ম্যানেজার এবং জেটিএ ট্রানজেকশন ম্যানেজার কি আলাদা?

উত্তর:


101

জেপিএ বাস্তবায়নের ক্ষেত্রে ( RESOURCE_LOCAL) নিজেরাই লেনদেন পরিচালনা করতে বা অ্যাপ্লিকেশন সার্ভারের জেটিএ বাস্তবায়ন দ্বারা পরিচালিত করার পছন্দ রয়েছে ।

বেশিরভাগ ক্ষেত্রে, RESOURCE_LOCAL ঠিক আছে। এটি প্রাথমিক জেডিবিসি-স্তরের লেনদেন ব্যবহার করবে। খারাপ দিকটি হ'ল লেনদেনটি জেপিএ অধ্যবসায়ী ইউনিটের স্থানীয়, সুতরাং আপনি যদি এমন একটি লেনদেন চান যা একাধিক স্থায়ীত্ব ইউনিট (বা অন্যান্য ডাটাবেসগুলি) জুড়ে, তবে RESOURCE_LOCAL যথেষ্ট ভাল নাও হতে পারে।

জেটিএ জেএমএস এবং জেসিএর মতো সিস্টেমে লেনদেন পরিচালনার জন্যও ব্যবহৃত হয়, তবে এটি আমাদের বেশিরভাগের পক্ষে মোটামুটি বহিরাগত ব্যবহার।

জেটিএ ব্যবহার করার জন্য আপনার অ্যাপ্লিকেশন সার্ভারে এটির জন্য সহায়তা এবং জেডিবিসি ড্রাইভারের সহায়তাও প্রয়োজন।


4
মনে হচ্ছে গ্লাসফীহ আমাকে রিসোর্স_ লোকাল ব্যবহার করতে দেয় না - আমি কীভাবে এটি করতে পারি?
পিট_চ

4
পার্শ্ব নোট হিসাবে: তৃতীয় পক্ষের সমাধানগুলি ব্যবহার করে কোনও সম্পূর্ণ জাভা ইই অ্যাপ্লিকেশন সার্ভার ছাড়াই জেটিএ কার্যকারিতা পেতে পারে যেমন উদাহরণস্বরূপ অ্যাটমিকোস । সুতরাং আপনার কাছে টমক্যাটের মতো হালকা ওয়েল কনটেইনার থাকতে পারে এবং এখনও জেটিএ সমর্থন পেতে পারেন।
informatik01

84

অন্যান্য উত্তরের সংযোজন হিসাবে

এখানে একটি হল উদ্ধৃতাংশ অত্যন্ত দরকারী নিবন্ধ (প্রকাশিত থেকে অ্যাপাচি 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


8
কেবল একটি পয়েন্ট যুক্ত করতে চেয়েছিলেন: আপনি যদি স্প্রিং ব্যবহার করছেন তবে আপনি রিসোর্স_লোকালের সাথে @ পার্সিস্টিস্ট কনটেক্সট এবং সত্ত্বা ম্যানেজারটি ব্যবহার করতে পারেন। এই ক্ষেত্রে স্প্রিং পাত্রে @ লেনদেনের টীকাগুলি ব্যবহার করে লেনদেন পরিচালনা করতে পারে।
স্যাম

আমার প্রকল্প সালে transaction-type=RESOURCE_LOCALএবং @PersistenceContextএবং @Transactionalস্প্রিং দ্বারা পরিচালিত
রবি পারেখ

আপনার প্রদত্ত লিঙ্কটির কারণে আমি ত্রিভুজটি মুখোমুখি করছি।
Koray Tugay

@ কোরেতুগায় আমি দুঃখিত, আপনি কী বলছেন তা পুরোপুরি বুঝতে পারিনি, কোন ত্রিভুজ?
informatik01

4
@ লিনুরাডু এই উত্তরটি আপনার পক্ষে সহায়ক হতে পারে: হাইবারনেটে সেশন.ফ্লুশ () এর ব্যবহার কী
তথ্য

18

রিসোর্স_লোকাল এবং জেটিএ হ'ল লেনদেন পরিচালক (লেনদেন করার পদ্ধতি)। এটি ডাটাবেসের সম্পত্তি নয় তবে লেনদেনের সমন্বয়ের জন্য দায়বদ্ধ উপাদান। জেপিএ এবং জেটিএ লেনদেন পরিচালকরা আলাদা are জেপিএ লেনদেন পরিচালক জেপিএ লেনদেনের জন্য দায়ী এবং আপনি যদি কেবল জেপিএ লেনদেন করেন তবে আপনি একটি ব্যবহার করতে চান। জেটিএ ট্রানজেকশন ম্যানেজার হ'ল সাধারণ উদ্দেশ্যে লেনদেন পরিচালক এবং লেনদেনে জেএমএসের সারিগুলির মতো অন্যান্য সংস্থানগুলিতে তালিকাভুক্ত করতে পারেন। সাধারণত জাভা ইই পাত্রে ইজেবি, জেপিএ সত্তা ইত্যাদির জন্য একটি জেটিএ লেনদেন পরিচালক নিয়োগ করে


1

রিসোর্স_লোকাল বনাম জেটিএ এর স্থানীয় লেনদেন বনাম বৈশ্বিক লেনদেন সম্পর্কে। এটি সম্পর্কে আমরা একক লেনদেনের অধীনে একাধিক সংস্থান পরিচালনা করতে পারি।

সিএমটি বনাম বিএমটি এর বিষয়ে কে লেনদেন খুলছে এবং বন্ধ করছে - অ্যাপ্লিকেশন বিকাশকারী বা অ্যাপ্লিকেশন সার্ভার।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.