আপনার REST এপিআইতে আপনার ডিটিওগুলি কেন ব্যবহার করা উচিত
ডিটিও এর অর্থ ডি আটা টি ট্রান্সফার হে বজেক্ট ।
এই প্যাটার্নটি খুব ভাল সংজ্ঞায়িত উদ্দেশ্যে তৈরি করা হয়েছিল: ওয়েব পরিষেবাদির মতো দূরবর্তী ইন্টারফেসগুলিতে ডেটা স্থানান্তর করুন । এই প্যাটার্নটি একটি আরএসটি এপিআইতে খুব ভাল ফিট করে এবং ডিটিওগুলি আপনাকে দীর্ঘকালীন সময়ে আরও নমনীয়তা দেয়।
আপনার অ্যাপ্লিকেশনটির ডোমেনকে উপস্থাপন করে এমন মডেল এবং আপনার API দ্বারা পরিচালিত ডেটার উপস্থাপনকারী মডেলগুলি বিভিন্ন উদ্বেগ (এবং কমপক্ষে হওয়া উচিত) এবং একে অপরের থেকে ডেকে নেওয়া উচিত । আপনি যখন অ্যাপ্লিকেশন ডোমেন মডেল থেকে কোনও ক্ষেত্র যুক্ত, অপসারণ বা নাম পরিবর্তন করবেন তখন আপনি আপনার API ক্লায়েন্টদের ভাঙতে চাইবেন না।
আপনার পরিষেবা স্তরটি ডোমেন / অধ্যবসায় মডেলগুলির উপরে পরিচালিত হওয়ার সময়, আপনার এপিআই কন্ট্রোলারদের বিভিন্ন সেট মডেলের মাধ্যমে পরিচালনা করা উচিত। আপনার ডোমেন / অধ্যবসায় মডেলগুলি যেমন নতুন ব্যবসায়ের প্রয়োজনীয়তাগুলিকে সমর্থন করার জন্য বিকশিত হয়েছে, উদাহরণস্বরূপ, আপনি এই পরিবর্তনগুলি সমর্থন করতে API মডেলগুলির নতুন সংস্করণ তৈরি করতে চাইতে পারেন। নতুন সংস্করণ প্রকাশ হওয়ার সাথে সাথে আপনি আপনার এপিআই এর পুরানো সংস্করণগুলি হ্রাস করতে চাইতে পারেন। এবং জিনিসগুলি ডিউপলড হয়ে গেলে এটি অর্জন করা পুরোপুরি সম্ভব।
কেবল দৃ models়তা মডেলের পরিবর্তে ডিটিও প্রকাশের কয়েকটি সুবিধা উল্লেখ করতে হবে:
এপিআই মডেলগুলি থেকে দৃou়প্রত্যয়ী মডেলগুলি ou
DTOs যাবে উপযোগী আপনার প্রয়োজন এবং তারা মহান যখন শুধুমাত্র আপনার অধ্যবসায় সত্ত্বা গুণাবলীর একটি সেট প্রকাশক হয়। আপনার কোনও এ্যানোটেশন যেমন প্রয়োজন হবে না @XmlTransient
এবং @JsonIgnore
কিছু বৈশিষ্ট্যের ক্রমিকায়ন এড়ানোর জন্য।
DTOs ব্যবহার করে, আপনি একটি এড়াতে হবে টীকা জাহান্নাম আপনার অধ্যবসায় সত্ত্বা, যে, আপনার অধ্যবসায় সত্ত্বা অ অধ্যবসায় সংশ্লিষ্ট টীকা সঙ্গে স্ফীত করা হবে না হবে।
কোনও উত্স তৈরি বা আপডেট করার সময় আপনি যে বৈশিষ্ট্যগুলি অর্জন করছেন তার উপর আপনার সম্পূর্ণ নিয়ন্ত্রণ থাকবে ।
আপনি যদি সোয়াগার ব্যবহার করেন তবে আপনি আপনার অধ্যবসায়ের অস্তিত্বগুলিকে গোলমাল না করে আপনার এপিআই মডেলগুলি নথিভুক্ত করতে ব্যবহার করতে পারেন @ApiModel
এবং @ApiModelProperty
টীকাগুলি ব্যবহার করতে পারেন ।
আপনার এপিআই এর প্রতিটি সংস্করণের জন্য আপনার আলাদা ডিটিও থাকতে পারে।
সম্পর্কের ম্যাপিংয়ের সময় আপনার আরও নমনীয়তা থাকবে।
বিভিন্ন মিডিয়া ধরণের জন্য আপনার বিভিন্ন ডিটিও থাকতে পারে।
আপনার ডিটিওগুলিতে হেটোয়াসের লিঙ্কগুলির একটি তালিকা থাকতে পারে । এই ধরণের জিনিস যা দৃ that়তা অবজেক্টগুলিতে যুক্ত করা উচিত নয়। স্প্রিং হেটোঅ্যাস ব্যবহার করার সময় , আপনি আপনার ডিটিও ক্লাসগুলি প্রসারিত করতে পারেন RepresentationModel
(পূর্বে হিসাবে পরিচিত ResourceSupport
) বা এগুলি মোড়ানো EntityModel
(পূর্বে হিসাবে পরিচিত Resource<T>
)।
বয়লারপ্লেট কোডটি দিয়ে কাজ করা
আপনাকে আপনার অধ্যবসায়ের অস্তিত্বগুলি ডিটিও এবং তার বিপরীতে ম্যানুয়ালি মানচিত্রের প্রয়োজন হবে না । আছে অনেক ম্যাপিং অবকাঠামো আপনাকে এটা করতে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, ম্যাপস্ট্রাকটি দেখুন , যা টীকাভিত্তিক ভিত্তি করে একটি ম্যাভেন টিকা প্রসেসর হিসাবে কাজ করে। এটি উভয় সিডিআই এবং স্প্রিং-ভিত্তিক অ্যাপ্লিকেশনগুলিতে ভাল কাজ করে।
এছাড়াও আপনি বিবেচনা করতে পারেন Lombok জেনারেট করতে getters, setters, equals()
, hashcode()
এবং toString()
আপনার জন্য পদ্ধতি।
সম্পর্কিত: আপনার ডিটিও ক্লাসগুলিতে আরও ভাল নাম দেওয়ার জন্য, এই উত্তরটি দেখুন ।