হাইবারনেটের চেয়ে মাইবাটিসের সুবিধা কী কী? [বন্ধ]


33

আমি নিজেই কিছু গবেষণা করেছি এবং প্রাথমিক ধারণাটি বুঝতে পারি। তবে কিছু অন্তর্দৃষ্টি কেবল প্রকৃত অভিজ্ঞতার মাধ্যমেই অর্জন করা যায়।

মাইবাটিসের কী কী সুবিধা যা এটি একটি নতুন কাঠামো শেখার জন্য মূল্যবান করে তুলবে?
কোন ক্ষেত্রে আপনি এটি ব্যবহার এড়াতে পারবেন?


3
আমি উভয় পরীক্ষা এবং কেয়েন ব্যবহার করে শেষ।
ডেডালনিক্স

উত্তর:


38

আপনি কী অর্জন করতে চাইছেন তা বিবেচনা করুন। সাধারণত, কমান্ড ক্যোয়ারী রেসপন্স পৃথককরণ মডেল জটিল ডোমেনগুলির জন্য ভাল কাজ করে।

কারণটি হ'ল আপনি সাধারণত দুটি কাজের মধ্যে একটি করার চেষ্টা করছেন:

  1. কিছু জটিল ডোমেন সত্তা তৈরি / আপডেট / মুছুন
  2. বিশ্লেষণমূলক আনার ক্যুরিগুলি চালান (যেমন সমষ্টি / সমষ্টি প্রশ্ন)

হাইবারনেট 1 কেসটির জন্য ভাল কাজ করে যা আপনাকে কেবল একটি পোজো তৈরি করতে এবং এটি অবিরত রাখতে / আপডেট করতে দেয়। আপনার ডোমেনটি বেশ বড় না হলে এটি এটি দ্রুত করে।

myBatis আনার প্রশ্নগুলির জন্য দুর্দান্ত (কেস 2) যেখানে আপনি কেবল উত্তর চান। হাইবারনেট পুরো অবজেক্ট গ্রাফটি লোড করার চেষ্টা করবে এবং এটিকে একটি বড় ডোমেনে কাজ চালিয়ে যাওয়ার জন্য আপনার LazyLoading কৌশলগুলির সাথে কোয়েরিগুলি টিউন করা শুরু করতে হবে। জটিল বিশ্লেষণমূলক ক্যুরিগুলি চালানোর সময় এটি গুরুত্বপূর্ণ যখন সত্তা অবজেক্টগুলিও ফেরায় না। হাইবারনেট কেবলমাত্র বিগডিসিমালের মতো বিশাল ডিফল্ট ধরণের সাথে এই ক্ষেত্রে সিক্লু কিউয়ারি এবং শিম ট্রান্সফর্মারগুলি সরবরাহ করে, যখন মাইবাটিস সহজেই একটি সাধারণ পোজো অ-সত্তাকে মানচিত্র করতে পারে।

এই দুটি ক্ষেত্রে হ'ল কমান্ডের মধ্যে পার্থক্য যেখানে আপনি ডোমেন ডেটা পরিবর্তন করতে চান এবং প্রতিক্রিয়াগুলি যেখানে আপনি কেবল কিছু তথ্য আনতে চান।

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


2
হাইবারনেট আপনার কেস 2-তেও ভাল কাজ করে। একটি সাধারণ উদাহরণের জন্য, দেখুন: mkyong.com/hibernate/hibernate-native-sql-queries-
মাইক

3
"হাইবারনেট পুরো বস্তু গ্রাফটি লোড করার চেষ্টা করবে" এটি একটি কনফিগারেশনের ভুল বলে মনে হচ্ছে। "LazyLoading ট্রিকস দিয়ে কোয়েরি টিউন করা শুরু করা দরকার" আপনি কোথাও আনতে = উত্সাহী সেট করেছেন বলে মনে হচ্ছে। জেপিএতে রয়েছে জেপিকিউএল যা ব্যবহারিকভাবে এসকিউএল, এখনও হাইবারনেট / জেপিএর সাথে সুসংহত। আমি মনে করি এটি খুব ভাল # 2 করে। কোনও ওআরএম সঠিকভাবে ১০০% কনফিগার করার আগে লোকেরা এক বছর বা তারও বেশি সময় ধরে উত্পাদন চালায় common যখন আমি বলি যে এটি একটি কনফিগারেশন ত্রুটি আছে তখন আমি কম করছি না - এই সরঞ্জামগুলির সাথে কনফিগারেশনটি সত্যই সময় সাপেক্ষ এবং জটিল হতে পারে!
গ্লেনপিটারসন

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

10
হাইবারনেট ধরণের ভান করে নীচে কোনও ডিবি নেই এবং আপনি কেবলমাত্র আপনার সাথে ডেটা মডেলটি এমনভাবে ব্যবহার করেন যেন এটি জাভা সংগ্রহগুলি ব্যবহার করে ডিজাইন করা হয়েছিল। যা প্রায়শই হয় না। ডিবি স্তরে ডেটা উপস্থাপনাটি খুব আলাদা হতে পারে এবং এটি জাভা সংগ্রহগুলিতে স্বয়ংক্রিয়ভাবে মানচিত্রের চেষ্টা করার কোনও প্রয়োজন নেই। এই কারণেই হাইবারনেট "লিকি বিমূর্তি" এর নিখুঁত উদাহরণ। মাইবাটিস অনেক সহজ, উপলব্ধি করা সহজ, কোনও জাদু নেই এবং .. হ্যাঁ, এসকিউএল রয়েছে যা আমি একটি ভাল জিনিস খুঁজে পাই কারণ এসকিউএল-ভিত্তিক ডাটাবেসের জন্য এসকিউএল ব্যবহারে কোনও ভুল নেই।
মার্সিন

2
@ মারকিন দুর্দান্ত পয়েন্ট। হাইবারনেটে সংগ্রহের অনুকরণ নিয়ে আমি অনেকগুলি সমস্যা দেখেছি। উদাহরণস্বরূপ কিছু কোড myBag.size () এবং হাইবারনেট কল করে 750K অবজেক্টগুলিকে গণনা করার আগে মেমোরিতে লোড করার চেষ্টা করে। আপনার যদি কেবল এসকিউএল প্রয়োজন হয় তবে এসকিউএল ব্যবহার করুন।
জোসেফ লাস্ট

19

মাইবাটিস এসকিউএল কেন্দ্রিক। এটি আপনাকে এসকিউএল স্টেটমেন্টগুলিতে কল করে এবং গাছগুলিকে আপত্তি জানাতে ফলাফল (টেবিল) ম্যাপিং করে।

মূল সুবিধাটি হ'ল এটি কোনও ওআরএম নয়। এটি আপত্তি করার জন্য সারণীগুলি মানচিত্র করে না তাই orm প্রতিবন্ধকতা মেলে না। জটিল বা উত্তরাধিকারের ডাটাবেসের জন্য বা সঞ্চিত পদ্ধতি, ভিউ এবং এর মতো ডিবি বৈশিষ্ট্যগুলি ব্যবহার করতে ভাল ফিট করে।

এটি বেশ সহজ এবং শিখতে সহজ তাই কম দক্ষ দলগুলির জন্যও খুব ভাল ফিট করে কারণ তাদের মধ্যে হাইবারনেট গুরু থাকার কোনও প্রয়োজন নেই।

জেপেটস স্টোর http:// http://mybatis.org/spring/sample.html দেখুন


2
সেই "স্বল্প দক্ষ দলগুলি" এখনও এসকিউএল জানা দরকার।
perp

ভাল সংক্ষিপ্ত উত্তর, দুটি প্রধান পার্থক্য হ'ল ডিবি কেন্দ্রিক + অগভীর শেখার বক্ররেখা। তবে "জটিল বা উত্তরাধিকারের ডাটাবেসের জন্য ভাল ফিট করে" এর সাথে আমি পুরোপুরি একমত নই। আপনার যখন ডিবি ডিজাইনের উপর আরও নিয়ন্ত্রণ থাকে তখন ডিবি কেন্দ্রিক হওয়ার সুবিধা আরও স্পষ্ট হয়।
ডিপিএম

5

যেহেতু প্রশ্ন বোঝায় করতে আমার মন্তব্য এখানে কি আমি মনের মধ্যে ছিল এটা লেখার আছে।

প্রথমত, এটি আপনার মূল প্রশ্নের প্রসঙ্গ থেকে উদ্ভূত। অন্য পরিস্থিতিতে আমি আলাদা পরামর্শ দিতে পারতাম। যে বিষয়টি আমাকে মাইবাতিসকে পরামর্শ দিয়েছে তা হ'ল:

... আমরা কিছু পারফরম্যান্স সমস্যার সম্মুখীন হয়েছি।

আমরা ডাটাবেসের কর্মক্ষমতা অর্জনের জন্য প্লেয়ার জেডিবিসির পক্ষে হাইবারনেট ফেলে দেওয়ার সিদ্ধান্ত নিয়েছি ...

অতীতের একটি প্রকল্পে, আমাদের দলটি আপনার মতো বর্ণনা করার কারণে হাইবারনেট থেকে সরানোর কথা বিবেচনা করছে। আপনার মতোই, আমরা জেডিবিসিতে স্যুইচ করতে যাচ্ছিলাম, কিন্তু অন্য প্রকল্পের সহকর্মীরা আমাদের মাইবাটিসকে সুপারিশ করেছিলেন। বিষয়গুলি যদি ভুল হয়ে যায় তবে জেডিবিসি কে ফ্যালব্যাক বিকল্প হিসাবে রাখার সময় টিম চেষ্টা করে দেখার সিদ্ধান্ত নিয়েছে।

এই মুহুর্তে, আমি মাইবাটিস সম্পর্কে কিছুই জানতাম না তবে জেডিবিসির সাথে এটি যথেষ্ট কাজ করবে তা নিশ্চিত করার জন্য পর্যাপ্ত অভিজ্ঞতা ছিল। এটি সত্ত্বেও, আমি মাইবাতিসকে চেষ্টা করার দৃ strongly় সমর্থন দিয়েছিলাম, মূল কারণটি আমার অতীত অভিজ্ঞতা অনুসারে, জেডিবিসির সাথে আমাদের যে পরিমাণ বয়লারপ্লেট কোডটি লিখতে হবে তা কেবল বিরক্তিকর হবে।

  • সত্যি কথা বলতে, আমি জেডিবিসি পছন্দ করি এটি সহজ, নির্ভরযোগ্য এবং ডাটাবেস ইন্টারঅ্যাকশনের উপর নিয়ন্ত্রণের ভাল অনুভূতি দেওয়ার জন্য, তবে এটির জন্য যে মূল্য দেওয়া হয় তা সত্যিই বেশি। আমার আঙ্গুলগুলি প্রতিবার ব্যথা শুরু হয় যখনই আমি জেডিবিসির সাথে কতটা বয়লারপ্লেট টাইপ করতে হয়েছিল তা স্মরণ করি।

যাইহোক, আমরা মাইবাটিস চেষ্টা করেছি এবং এটি বিজ্ঞাপন হিসাবে কাজ করেছে। এজন্য আমি আপনার সম্পর্কে যে মন্তব্যটি লিখেছেন তা লিখেছি।

আপনি যদি আমার কাছে প্রযুক্তিটির একটি বিশদ ওভারভিউ দেওয়ার আশা করেন বা কোনওভাবে এর শ্রেষ্ঠত্বের প্রশংসা করেন - দুঃখিত আমি এটি করতে পারি না। যদি আমি পারতাম - আমি ইতিমধ্যে সংক্ষিপ্ত মন্তব্য না করে বরং আপনার মূল প্রশ্নের পৃথক উত্তরে লিখতে চাই। আমি উল্লেখ করেছি আমি তখন মাইবাটিস সম্পর্কে কিছুই জানতাম না - দুঃখিত, এখনও আমার এ সম্পর্কে খুব কম জ্ঞান আছে। হাইবারনেট থেকে স্থানান্তর অন্যান্য দলের সদস্যরা দ্বারা সম্পন্ন হয়েছিল এবং আমি যে কোডটি নিয়ে কাজ করছি তাতে তার প্রভাব পড়েনি। আমি কেবল কী টেকওয়েজগুলি স্মরণ করেছি (যার ভিত্তিতে আমি আমার মন্তব্য করেছি), যথা 1) মাইবাতিস হায়বারনেটের সাথে আমাদের যে সমস্যাগুলি সমাধান করেছিল, 2) এটি নিজস্ব নিজস্ব সমস্যাগুলি প্রবর্তন করে না এবং 3) এটি আমাদের বয়লারপ্লেট কোড I এড়াতে অনুমতি দিয়েছিল I আমরা জেডিবিসি-তে স্যুইচ করলে ক্ষেত্রে প্রত্যাশা ছিল। এখানেই শেষ.


3

হাইবারনেট অত্যধিক যাদু , অপ্রত্যাশিত আচরণ এবং বড় শিক্ষার বক্ররেখার জন্য ভাল জানেন । বাইরে অন্যান্য ফ্রেমওয়ার্ক রয়েছে যা সরলতার দিকে বেশি জোর দেয় এবং আপনাকে নিয়ন্ত্রণে রাখবে।

মাইবাটিস তার মধ্যে একটি, আমার প্রকল্প মেন্টাবিয়ান আরেকটি। আমি এটি সম্পর্কে একটি ব্লগ পোস্ট লিখেছি যা সাহায্য করতে পারে।


6
হাই সার্জিও এবং স্বাগতম। আমাদের সম্প্রদায়টি সাধারণত স্ব-পদোন্নতির উপর নির্ভর করে এবং আমরা আপনাকে আপনার উত্তরগুলিতে স্পষ্টভাবে প্রকাশ করার জন্য প্রয়োজন । আমি আপনার উত্তরটি সম্পাদনা করেছিলাম যে মেন্টাবিয়ান একটি প্রকল্প যা আপনি জড়িত, এবং আপনি যে ব্লগ পোস্টটি নির্দেশ করেছেন আপনি তা লিখেছেন, যদি আপনি শব্দবন্ধ পছন্দ না করে থাকেন তবে এটিকে পরিবর্তন করতে পারেন তবে দয়া করে বজায় রাখুন আপনি MentaBean সঙ্গে জড়িত যে প্রকাশ কিছু ধরণের। আরও তথ্যের জন্য আমাদের FAQসম্পর্কিত বিভাগটি পড়ুন ।
ইন্নিস

হাই ইয়ান্নিস আমি এটা করবো. সতর্ক থাকুন জন্য ধন্যবাদ। :)
সেরজিও অলিভিরা জুনিয়র

-1

আমি হাইবারনেট 3 ব্যবহার করে 5 বছর আগে ডেটা লোডিং এবং ডেটা ট্রান্সফর্মেশন প্রকল্পের জন্য হাইবারনেট ব্যবহার করেছি এবং আমি ভাবলাম এটি দুর্দান্ত ছিল। আমি একটি ছোট ই-বাণিজ্য অ্যাপ্লিকেশন করছি এবং আমি হাইবারনেট 4 ব্যবহার করার চেষ্টা করেছি এবং আমি চূড়ান্ত হতাশ হয়েছি। তারা সরঞ্জামগুলি সরিয়েছে এবং আইডিইতে শক্তভাবে সংহত করেছে। আমি মাইবাটিস চেষ্টা করেছিলাম এবং আমি একটি রাতে সমস্ত কিছু করে কাজ করি এবং কোনও অ্যাপ্লিকেশনটিতে সংহত করা কতটা সহজ তা নিয়ে আমি খুব সন্তুষ্ট। আমি মনে করি হাইবারনেট খুব ফুলে উঠেছে এবং আমি এই মুহুর্তে হাইবারনেটের উপরে EJB 3 ব্যবহার করব।


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