অধ্যবসায়-অজ্ঞ অবজেক্টগুলি কী অলস লোডিং বাস্তবায়নে সক্ষম?


12

অধ্যবসায় অজ্ঞতা একক দায়বদ্ধতার নীতির প্রয়োগ, যা ব্যবহারের অর্থ হ'ল ডোমেন অবজেক্টস ( ডিও ) অধ্যবসায়ের সাথে সম্পর্কিত কোড থাকা উচিত নয়, পরিবর্তে তাদের কেবল ডোমেন যুক্তি থাকতে হবে।

ক) আমি ধরে নিলাম এর অর্থ এই যে কোডটি নিম্ন স্তরের সাথে যোগাযোগ করে (অর্থাত্ দৃistence় স্তরগুলি) ব্যবসায়ের যুক্তিযুক্ত স্তরের অন্যান্য ক্লাসে ( ওসি ) ডোমেন মডেলের বাইরে থাকে?

খ) যদি অধীনে আমার ধৃষ্টতা ক) সঠিক হয়, তাহলে DO বলো Customer, কখনও যেমন পদ্ধতি রয়েছে GetCustomersবা GetCustomerByID?

গ) অধীনে আমার অনুমানের তাহলে ক) এবং খ) সঠিক হয়, এবং অভিমানী Customerডোমেইন বস্তু, তার সম্পত্তি কিছু অলস লোড ব্যবহার তারপর কিছু সময়ে Customerএর অভ্যন্তরীণ যুক্তিবিজ্ঞান আবশ্যক পরিচিতির ওসি , যেটা ঘুরে আহরণ ডেটা deffered। তবে যদি ডিফার্ড ডেটা পাওয়ার জন্য ওসিরCustomer সাথে যোগাযোগের প্রয়োজন হয় , তবে আমরা সত্যিই দাবি করতে পারি না যে ডোমেন অবজেক্টগুলিতে অধ্যবসায় সম্পর্কিত যুক্তি নেই ?!

ধন্যবাদ

জোকোহেলহেপকে উত্তর দেওয়া হচ্ছে

1) আমি ধরে নিই OrderProviderএবং CustomerProviderক্লাসগুলি ব্যবসায় যুক্তিযুক্ত স্তরের অন্তর্ভুক্ত?

2) আমি আপনার জবাব থেকে সংগ্রহ করি যে খ) এর অধীনে আমার অনুমানগুলি সঠিক?

3)

... আমি দেখতে চাই যে কিছু ব্যক্তিগত অর্ডার ক্ষেত্র জনবহুল ছিল বা এটি শূন্য ছিল কিনা। যদি তা শূন্য হয় ...

তবে যতদূর আমি বলতে পারি, যতক্ষণ না ডোমেন কোডে ব্যক্তিগত orderক্ষেত্রটি জনবহুল ছিল কিনা তা যাচাই করা দরকার , এবং যদি এটি না হয় তবে অর্ডারপ্রোভাইদারের সাথে যোগাযোগ করা, আমরা ইতিমধ্যে পিআই নীতি লঙ্ঘন করছি ?!

উত্তর:


4

আমি বিশ্বাস করি যে অধ্যবসায় অজ্ঞতার আশেপাশে আপনার অনুমান A এবং B ঠিক আছে।

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

আমি নিম্নলিখিত ক্লাসগুলি ব্যবহার করে অধ্যবসায় অজ্ঞতা বাস্তবায়নের ঝোঁক:

  • ডোমেন ক্লাস - যেমন গ্রাহক
  • সরবরাহকারী / সংগ্রহশালা ক্লাস - যেমন গ্রাহকপ্রভাইডার
  • জেনেরিক ডাটাবেস অনুসন্ধানের ক্লাস - যেমন ডাটাবেসকোয়ারি ery

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

সরবরাহকারী শ্রেণিগুলি ব্যবসায়ের স্তর বা ডেটা স্তরতে হওয়া উচিত কিনা তা সম্পর্কে আমার দৃ a় মতামত নেই। আমি উভয়ের জন্য একটি মামলা দেখতে পারেন। গুরুত্বপূর্ণ অংশটি হ'ল আপনি ক্লাসগুলিতে দায়িত্বগুলি পৃথক করুন।

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

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

এটি ধরে নেওয়া হয় যে আপনি ম্যানুয়ালি অধ্যবসায় অজ্ঞতা করছেন। আপনি যদি কোনও অর্টি ফ্রেমওয়ার্ক বা হাইবারনেটের মতো কোনও ওআরএম কাঠামো ব্যবহার করে থাকেন তবে সেই ফ্রেমওয়ার্কগুলিতে অলস লোডিং স্বয়ংক্রিয়ভাবে সমর্থন করার জন্য বৈশিষ্ট্যগুলি থাকে।


হাই, যদি আপনি সময়টি খুঁজে পান - আমি আপনার উত্তরের উত্তরে আমার পোস্টটি সম্পাদনা করেছি
ব্যবহারকারী 1483278

1
@ ব্যবহারকারী1483278 আশা করি এই প্রশ্নগুলির সমাধান করার জন্য আমি আমার উত্তর সম্পাদনা করেছি।
যৌক্তিকগীত

পিআই কি দাঁড়ায়?
কুগেল

অধ্যবসায় অজ্ঞতা
যুক্তিবাদী

2

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

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