জাভাবিয়ান এবং একটি পজোর মধ্যে পার্থক্য কী?


210

আমি পার্থক্য সম্পর্কে নিশ্চিত নই। আমি হাইবারনেট এবং কিছু বইয়ে ব্যবহার করছি, তারা জাভাবিয়ান এবং পোজোকে বিনিময়যোগ্য পদ হিসাবে ব্যবহার করে। শুধু হাইবারনেট প্রসঙ্গে নয়, সাধারণ ধারণা হিসাবে কোনও পার্থক্য রয়েছে কিনা তা জানতে চাই।

উত্তর:


252

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

একটি POJO (প্লেইন-ওল্ড-জাভা-অবজেক্ট) কঠোরভাবে সংজ্ঞায়িত করা হয়নি। এটি একটি জাভা অবজেক্ট যার কোনও নির্দিষ্ট ইন্টারফেস প্রয়োগ করার বা নির্দিষ্ট বেস শ্রেণি থেকে প্রাপ্ত, বা নির্দিষ্ট কাঠামোর সাথে সামঞ্জস্য করার জন্য নির্দিষ্ট টীকাগুলির ব্যবহার করার প্রয়োজন নেই এবং কোনও যথেচ্ছ (প্রায়শই তুলনামূলক সহজ) হতে পারে জাভা অবজেক্ট।


41
নোট করুন যে একটি জাভাবিয়ান সাধারণত একটি পোজো হতে পারে এবং অনেকগুলি পোগো আসলে জাভাবিয়ান হয়।
জোছিম সউর

8
না, POJO সংজ্ঞা দ্বারা একটি জাভা সিম হয় না একটি POJO কারণ একটি জাভা সিম একটি বর্গ নির্দিষ্ট কোডিং নিয়মাবলী অনুসরণ করতে হবে (যেমন একটি নো ARG কন্সট্রাকটর আছে, পদ্ধতি শব্দ দিয়ে শুরু আছে "পেতে" এবং / অথবা বিবেচনা করা "সেট") বা বিয়ানআইএনফো ক্লাসে বিতরণ করা হবে।
নাট

15
যেহেতু এগুলি কনভেনশন হয় , আমি মনে করি আপনি সফলভাবে তর্ক করতে পারেন যে শিম কোনও পোজো হতে পারে (যেমন আপনি জাভাবিয়ান ইন্টারফেস বা অনুরূপভাবে উত্তরাধিকারী নন)
ব্রায়ান অগ্নিউ

1
জাভাবিয়ানস স্পেসটি খুব সহজেই "পুনরায় ব্যবহারযোগ্য সফ্টওয়্যার উপাদান" (বা এরকম কিছু) হিসাবে একটি জাভাবীনের সংজ্ঞা দিতে ব্যর্থ হয়েছে। এটিতে কোনও নো-আরগ কন্সট্রাক্টর থাকতে হবে না, "get" বা "সেট" দিয়ে শুরু করার পদ্ধতিগুলির দরকার নেই, সিরিয়ালিয়াল হওয়ার দরকার নেই, এমনকি শ্রেণি হওয়ারও দরকার নেই।
টম হাটিন -

4
গাণিতিক ভাষায়, আমরা বলতে পারি যে জাবাবেইনসগুলি পওজোর একটি উপসেট গঠন করে, কারণ, কোনও পজোতে নির্দিষ্ট সীমাবদ্ধতাগুলি এটি জাবাবিয়ান করে তোলে।
নিশিত

106

সমস্ত জাভাবিয়ানগুলি পোগো তবে সমস্ত পোগো জাভাবিয়ান নয়।

একটি জাভাবিয়ান একটি জাভা অবজেক্ট যা নির্দিষ্ট প্রোগ্রামিং কনভেনশনগুলিকে সন্তুষ্ট করে:

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

1
আমি ভেবেছিলাম POJOs বাস্তবায়ন করতে পারবেন না Serializable
ন্যাক্সা

10
"জাভাবিয়ান শ্রেণিতে অবশ্যই একটি নো-আরগ কনস্ট্রাক্টর থাকতে হবে;" এছাড়াও যোগ প্রকাশ্য এখানে
radistao

একটি জাভাবিয়ান সিরিয়ালাইজযোগ্য এবং সেজন্য জাভাবিয়ান কোনও পোজো নয়।
karlihnos

25

মার্টিন ফাউলারের মতে একটি পজো এমন একটি জিনিস যা ব্যবসায় যুক্তি সংযুক্ত করে যখন একটি বিন (ইতিমধ্যে অন্যান্য উত্তরগুলিতে বর্ণিত সংজ্ঞা বাদে) তথ্য রাখার জন্য ধারক এবং অবজেক্টে উপলব্ধ ক্রিয়াকলাপগুলি কেবল সেট করে এবং ডেটা পান।

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

http://www.martinfowler.com/bliki/POJO.html


7

পোজো: যদি কোনও বাহ্যিক তৃতীয় পক্ষের লাইব্রেরি সমর্থন না করে অন্তর্নিহিত জেডিকে দিয়ে ক্লাসটি সম্পাদন করা যায় তবে এর নাম পজো বলে

জাভাবিয়ান: যদি ক্লাসে কেবল অ্যাকসেসর (সেটার এবং গেটার্স) এর সাথে বৈশিষ্ট্য থাকে তবে সেগুলিকে জাভাবিনস বলা হয় ava

সমস্ত জাবাবেইনস পিওজেও তবে সমস্ত পোজো জাভাবিয়ান নয়


7

পোজো - সরল পুরাতন জাভা বস্তু

পোজো ক্লাসটি কোনও বিশেষত্ব ছাড়াই একটি সাধারণ শ্রেণি, প্রযুক্তি / কাঠামো থেকে সম্পূর্ণরূপে ক্লাসযুক্ত শ্রেণি technology ক্লাসটি প্রযুক্তি / কাঠামো থেকে প্রয়োগ করে না এবং প্রযুক্তি / কাঠামো এপিআই থেকে প্রসারিত হয় না যে শ্রেণিটিকে পোজো শ্রেণি বলা হয়।

পোজো ক্লাস ইন্টারফেস প্রয়োগ করে এবং ক্লাস প্রসারিত করতে পারে তবে সুপার ক্লাস বা ইন্টারফেসটি প্রযুক্তি / কাঠামো হওয়া উচিত নয়।

উদাহরণ:

1।

class ABC{
----
}

প্রযুক্তি বিভাগ / কাঠামো থেকে এবিসি শ্রেণি বাস্তবায়ন বা প্রসারিত করছে না এই কারণেই এটি পোজো শ্রেণি।

2।

class ABC extends HttpServlet{
---
}

সার্বিলেট প্রযুক্তি এপিআই থেকে বর্ধিত এবিসি ক্লাস এই কারণেই এটি কোনও পোজো ক্লাস নয়।

3।

class ABC implements java.rmi.Remote{
----
}

এবিসি ক্লাস আরএমআই এপি থেকে প্রয়োগ করে, এই কারণেই এটি কোনও পোজো ক্লাস নয়।

4।

class ABC implements java.io.Serializable{
---
}

এই ইন্টারফেসটি জাভা ভাষার একটি অংশ প্রযুক্তি / কাঠামোর অংশ নয় so সুতরাং এটি পোজো শ্রেণি।

5।

class ABC extends Thread{
--
}

এখানে থ্রেড জাভা ভাষারও শ্রেণি তাই এটিও একটি পোজো শ্রেণি।

6।

class ABC extends Test{
--
}

যদি টেস্ট ক্লাসটি প্রযুক্তি / কাঠামো থেকে প্রসারিত হয় বা প্রয়োগ করে তবে এবিসিও কোনও পোজো ক্লাস নয় কারণ এটি টেস্ট শ্রেণির বৈশিষ্ট্যগুলির উত্তরাধিকার সূত্রে প্রাপ্ত। টেস্ট ক্লাস যদি পোজোর ক্লাস না হয় তবে এবিসি ক্লাসও পোজো ক্লাস নয়।

7।

এখন এই পয়েন্টটি একটি ব্যতিক্রমী মামলা

@Entity
class ABC{
--
}

@Entityহাইবারনেট এপি বা জেপা এপি দ্বারা প্রদত্ত একটি টীকা তবে তবুও আমরা এই শ্রেণিকে পোজো ক্লাস হিসাবে বলতে পারি। প্রযুক্তি / কাঠামো থেকে দেওয়া টীকা সহ শ্রেণিটিকে এই ব্যতিক্রমী ক্ষেত্রে পোজো ক্লাস বলা হয়।



1

POJOSনির্দিষ্ট কনভেনশন (গেটর / সেটার, পাবলিক নো-আরগ কনস্ট্রাক্টর, প্রাইভেট ভেরিয়েবল) সহ এবং ক্রিয়াকলাপে রয়েছে (উদাহরণস্বরূপ, ফর্মের মাধ্যমে ডেটা পড়ার জন্য ব্যবহৃত হচ্ছে) হ'ল JAVABEANS


1

সংক্ষেপে: মিল এবং পার্থক্যগুলি হ'ল:

   java beans:                          Pojo:
-must extends serializable              -no need to extends or implement.
 or externalizable.                     
-must have public class .               - must have public class
-must have private instance variables.      -can have any access specifier variables.
-must have public setter and getter method. - may or may not have setter or getter method.
-must have no-arg constructor.           - can have constructor with agruments.

সমস্ত জাভা বিন মজাদার পজো তবে সমস্ত পোজো জাভা শিম নয়।


0

আপনি উপরে আনুষ্ঠানিক সংজ্ঞাগুলি দেখেছেন, সেগুলির জন্য মূল্যবান।

তবে সংজ্ঞাগুলিতে খুব বেশি ঝুলবেন না। আসুন এখানে জিনিসগুলি বোঝার জন্য আরও তাকান ।

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

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

সব মিলিয়ে, আপনি জাভা বিনগুলি কেবল জাভা অবজেক্টগুলিকে কোনও নেটওয়ার্কে ব্যবহারের জন্য অভিযোজিত হিসাবে দেখতে পেলেন।

১৯৯৯ সাল থেকে সফটওয়্যার জগতে একটি অদ্ভুত হাইপ রয়েছে - এবং কোনও অল্প পরিমাণ হম্বুগ নেই।

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