ঠিক আছে, যখনই আমাদের মতো এই জাতীয় আলোচনা হয় তখন একটি কাজ করা গুরুত্বপূর্ণ যা অবজেক্ট রিলেশনাল ম্যাপার্স ("ওআরএম") এবং ডাটাবেস অ্যাবস্ট্রাকশন স্তরগুলির মধ্যে স্পষ্টভাবে পার্থক্য করা । একটি ওআরএম হ'ল এক প্রকারের ডাটাবেস বিমূর্ত স্তর, তবে সমস্ত ডাটাবেস বিমূর্ত স্তরগুলি ওআরএম নয়। এটি উপলব্ধি করার জন্য অধ্যয়নের জন্য একটি ভাল সরঞ্জাম পাইথনের জনপ্রিয় এসকিউএএলএলচেমি লাইব্রেরি, এটি নিজেকে আলাদা আলাদা জিনিস বলে ধারণা দিয়ে একটি "এসকিউএল টুলকিট এবং অবজেক্ট রিলেশনাল ম্যাপার" (আমার সাহসী পৃষ্ঠ) হিসাবে বিল করে । তারা এটি তাদের মূল বৈশিষ্ট্যগুলির পৃষ্ঠাতে রেখেছিল :
কোনও ওআরএম প্রয়োজন নেই
SQLAlchemy দুটি স্বতন্ত্র উপাদান, হিসাবে পরিচিত নিয়ে গঠিত কোর এবং ORM । কোর নিজেই একটি সম্পূর্ণ বৈশিষ্ট্যযুক্ত এসকিউএল অ্যাবস্ট্রাকশন টুলকিট, বিবিধ বিভিন্ন DBAPI বাস্তবায়ন এবং আচরণের উপর বিমূর্ততার একটি মসৃণ স্তর সরবরাহ করে, পাশাপাশি একটি এসকিউএল এক্সপ্রেশন ল্যাঙ্গুয়েজ যা জেনারেটর পাইথন এক্সপ্রেশনগুলির মাধ্যমে এসকিউএল ভাষার প্রকাশের অনুমতি দেয়। একটি স্কিমা প্রতিনিধিত্বমূলক সিস্টেম যা উভয়ই ডিডিএল বিবৃতি নির্গত করতে পারে এবং বিদ্যমান স্কিমাগুলি আত্মমোচন করতে পারে এবং একটি টাইপ সিস্টেম যা পাইথন প্রকারের কোনও ম্যাপিংকে ডাটাবেস প্রকারগুলিতে মঞ্জুরি দেয়, সিস্টেমকে ঘিরে ফেলে। অবজেক্ট রিলেশনাল ম্যাপারটি হ'ল একটি .চ্ছিক প্যাকেজ যা কোরকে কেন্দ্র করে।
প্রথম পৃষ্ঠাটি ORM এর বর্ণনা দেয়:
এসকিউএলএলচেমি তার অবজেক্ট-রিলেশনাল ম্যাপার (ওআরএম), যা একটি ,চ্ছিক উপাদান যা ডেটা ম্যাপার প্যাটার্ন সরবরাহ করে, যেখানে ক্লাসগুলি ওপেন এন্ডে, একাধিক উপায়ে ডেটাবেজে ম্যাপ করা যায় - যা অবজেক্ট মডেল এবং ডাটাবেস স্কিমাকে একটিতে বিকাশ করে প্রথম থেকে পরিষ্কারভাবে decoupled উপায়।
একটি ওআরএমের মূল ধারণাটি হ'ল বিখ্যাত অবজেক্ট-রিলেশনাল ইম্পিডেন্স ম্যাচ ম্যাচটি চেষ্টা এবং ব্রিজ করা । এর অর্থ ব্যবহারকারী-সংজ্ঞায়িত শ্রেণীর মধ্যে একটি ডেটাবেস স্কিমে টেবিলের মধ্যে সম্পর্কের সংজ্ঞা দেওয়া এবং আপনার অ্যাপ্লিকেশনটির ক্লাসগুলির জন্য স্বয়ংক্রিয় "সংরক্ষণ" এবং "লোড" ক্রিয়াকলাপ সরবরাহ করা।
বিপরীতে, নন-ওআরএম ডাটাবেস বিমূর্ত স্তরগুলি সম্পর্কিত ডেটা মডেল এবং এসকিউএল-এর প্রতি আরও প্রতিশ্রুতিবদ্ধ হতে থাকে এবং অবজেক্ট-ওরিয়েন্টেশনের ক্ষেত্রে মোটেই নয়। সুতরাং সারণী এবং ক্লাসগুলির মধ্যে "ম্যাপিংস" বৈশিষ্ট্যযুক্ত না করে এবং প্রোগ্রামার থেকে ডেটাবেস স্কিমাকে গোপন করার পরিবর্তে তারা প্রোগ্রামারকে ডাটাবেস উন্মোচন করার ঝোঁক দেয় তবে আরও ভাল এপিআই এবং বিমূর্ততা দিয়ে। উদাহরণস্বরূপ, এসকিউএল কোয়েরি বিল্ডারগণ আপনাকে স্ট্রিং ম্যানিপুলেশন ছাড়াই প্রোগ্রামিংগতভাবে জটিল এসকিউএল কোয়েরিগুলি তৈরি করার অনুমতি দেয় ( জাভার জন্য জওকিউ লাইব্রেরির একটি উদাহরণ ):
// Typesafely execute the SQL statement directly with jOOQ
Result<Record3<String, String, String>> result =
create.select(BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
.from(BOOK)
.join(AUTHOR)
.on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
.where(BOOK.PUBLISHED_IN.equal(1948))
.fetch();
এখন, প্লে ফ্রেমওয়ার্কটি আমি যা যা বর্ণনা করেছি তাতে লিগে 100% বলে মনে হচ্ছে না , তবে তাদের যুক্তিটি এই সাধারণ জায়গাতেই রয়েছে বলে মনে হচ্ছে: এটি ক্লাসে অনুবাদ করার পরিবর্তে সরাসরি সম্পর্কিত মডেলটির সাথে কাজ করুন এবং সেগুলি থেকে ফিরে আসুন।
JOOQ গ্রন্থাগার ORMs করার জন্য একটি সুরের যেমন অধ্যয়নরত মূল্য। তাদের কিছু প্রাসঙ্গিক ব্লগ এন্ট্রি রয়েছে যা পড়ার মতো: