ডেটাবেস ম্যাপ করা ক্লাসগুলিতে কোথায় এবং কীভাবে পদ্ধতি যুক্ত করা যায় সে সম্পর্কে আমি আজ আমার সংস্থার অন্য একজন বিকাশকারীর সাথে উত্তপ্ত বিতর্কে জড়িয়ে পড়েছি। আমরা ব্যবহার করি sqlalchemy
এবং আমাদের ডাটাবেস মডেলগুলিতে বিদ্যমান কোড বেসের একটি বড় অংশটি ক্লাসের নামযুক্ত ম্যাপযুক্ত বৈশিষ্ট্যের ব্যাগের চেয়ে কিছুটা বেশি, ডেটাবেস টেবিল থেকে পাইথন অবজেক্টের প্রায় যান্ত্রিক অনুবাদ।
যুক্তিতে, আমার অবস্থানটি ছিল যে কোনও ওআরএম ব্যবহারের প্রাথমিক মানটি হ'ল আপনি ম্যাপযুক্ত শ্রেণীর সাথে নিম্ন স্তরের আচরণ এবং অ্যালগরিদম সংযুক্ত করতে পারেন। মডেলগুলি প্রথম শ্রেণীর, এবং দ্বিতীয়ত ধ্রুবক (তারা কোনও ফাইল সিস্টেমে এক্সএমএল ব্যবহার করে ধ্রুবক হতে পারে, আপনার যত্ন করার দরকার নেই)। তাঁর দৃষ্টিভঙ্গি ছিল যে কোনও আচরণ হ'ল "ব্যবসায়িক যুক্তি", এবং অগত্যা যে কোনও জায়গায় কিন্তু স্থির মডেলটির অন্তর্ভুক্ত, যা কেবল ডাটাবেস অধ্যবসায়ের জন্য ব্যবহার করা উচিত।
আমি অবশ্যই কি মধ্যে একটি পার্থক্য নেই মনে করেন হয় বিজনেস লজিক, এবং, পৃথক করা উচিৎ যেহেতু এটি যে কিভাবে বাস্তবায়িত পরার নিচের পর্যায় থেকে কিছু বিচ্ছিন্নতা আছে, এবং ডোমেইন যুক্তি, যা আমি বিশ্বাস করি মডেল শ্রেণীর দ্বারা উপলব্ধ বিমূর্ততা হয় পূর্ববর্তী অনুচ্ছেদে নিয়ে তর্ক করেছিলেন তবে আমি যা বলছি তাতে আঙ্গুল তুলতে আমার খুব কষ্ট হচ্ছে। আমি কী এপিআই হতে পারি তার আরও ভাল ধারণা আছে (যা আমাদের ক্ষেত্রে এইচটিটিপি "রিস্টফুল"), ব্যবহারকারীরা তাদের যা করতে চান তা দিয়ে API কে অনুরোধ করে , তাদের কী করার অনুমতি দেওয়া হয় এবং কীভাবে এটি করা যায় হয়ে যায়
tl; dr: কোনও ওআরএম ব্যবহার করার সময় ম্যাপযুক্ত শ্রেণিতে কোন ধরণের জিনিসগুলি কোনও পদ্ধতিতে যেতে পারে বা হওয়া উচিত এবং কী কী বিসর্জন দেওয়া উচিত, বিমূর্তির অন্য স্তরে থাকতে?