@ ওনটোমন্য এবং @ এলিমেটিক্যালকলেশন এর মধ্যে পার্থক্য?


128

উভয়ই একের সাথে একাধিক সম্পর্কের ক্ষেত্রে কাজ করে @OneToManyএবং @ElementCollectionটীকা ব্যবহারের মধ্যে পার্থক্য কী ?


3
সংক্ষেপে, @ElementCollection ব্যবহার করা হয় যখন সন্তানের সত্তা অস্তিত্ব পিতা বা মাতা সত্তা ছাড়া অর্থহীন, IOW, যখনই একটি পিতা বা মাতা সত্তা সরিয়ে ফেলা হয়, আপনার সন্তানদের হতে হবে ...
dellasavia

1
আমি বিশ্বাস করি যে এটি শিশু সত্তা নয়, এটি মান প্রকার / মান অবজেক্ট যা এম্বেড করা আছে এবং যার অস্তিত্ব এটিতে থাকা মূল সত্তা ব্যতীত কম অর্থ less
কৌতূহলীমাণ্ড

@ করিয়াসমাইন্ডের সাথে একমত, জেপিএতে একটি 'সত্তা'র নিজস্ব জীবনকাল রয়েছে।
mrsrshihi

উত্তর:


124

আমি বিশ্বাস করি @ElementCollectionমূলত অ-সত্ত্বা (এম্বেডযোগ্য বা বেসিক) ম্যাপিংয়ের জন্য যখন @OneToManyসত্ত্বাগুলির মানচিত্র ব্যবহৃত হয়। কোনটি ব্যবহার করতে হবে তা আপনি কী অর্জন করতে চান তার উপর নির্ভর করে।


1
উত্তরের জন্য পেডার ধন্যবাদ! আপনার এখানে একটি বৈধ পয়েন্ট রয়েছে যেহেতু @ অ্যান্টিওম্যানি কেবল সত্তা সম্পর্কিত করতে পারে।
n_g

157

ElementCollectionহ'ল স্ট্যান্ডার্ড জেপিএ টিকা, যা এখন মালিকানাধীন হাইবারনেট টীকাটির চেয়ে বেশি পছন্দ করা হয় CollectionOfElements

এর অর্থ হল যে সংগ্রহটি সত্তার সংকলন নয়, সাধারণ ধরণের (স্ট্রিংস, ইত্যাদি) বা এমবেডেবল উপাদানগুলির সংকলন (এর সাথে ক্লাস টিকা দেওয়া @Embeddable)।

এর অর্থ হ'ল উপাদানগুলি হ'ল সংস্থাগুলির সম্পূর্ণ মালিকানাধীন: সত্তাটি সংশোধন করা হয়, সত্তা মোছার সময় মুছে ফেলা হয় ইত্যাদি they তাদের নিজস্ব জীবনচক্র থাকতে পারে না।


... এবং আপনি তাদের নিজের মতো করে জিজ্ঞাসা করতে পারবেন না।
আট

65

@ElementCollectionআপনি যখন সরল বা এম্বেড থাকা প্রকারের সাথে এক থেকে একাধিক সম্পর্ক বাস্তবায়ন করতে চান তখন আপনাকে কোড সরল করতে দেয়। উদাহরণস্বরূপ, জেপিএ ১.০-এ আপনি যখন একটি তালিকার সাথে একাধিক সম্পর্ক স্থাপন করতে চেয়েছিলেন, তখন আপনাকে একটি প্রাথমিক Stringসত্ত্বা POJO ( StringWrapper) তৈরি করতে হবে যা কেবলমাত্র প্রাথমিক কী এবং Stringপ্রশ্নে রয়েছে:

@OneToMany
private Collection<StringWrapper> strings;

//...

public class StringWrapper {
  @Id
  private int id;

  private String string;
}

জেপিএ ২.০ সহ আপনি কেবল লিখতে পারেন:

@ElementCollection
private Collection<String> strings;

সরল, তাই না? নোট করুন যে আপনি এখনও @CollectionTableটীকা এবং কলামের নামগুলি টীকাটি ব্যবহার করে নিয়ন্ত্রণ করতে পারেন ।

আরো দেখুন:


যুক্তির জন্য দুর্দান্ত ব্যাখ্যা। :)
ফুয়াহ ইয়ে কিট

4

বেসিক বা এম্বেড : @ElementCollection
সংস্থাগুলো : @OneToMany বা @ManyToMany

@ElementCollection:

  • সম্পর্কটি সেই সত্তার দ্বারা পরিচালিত হয় (কেবলমাত্র) যেখানে সম্পর্কের সংজ্ঞা দেওয়া হয়
  • সারণীতে মালিকানা সত্তা প্লাস বেসিক বা এম্বেড বৈশিষ্ট্যগুলির আইডি রেফারেন্স রয়েছে

@ ওনটোম্যানি / @ ম্যানিটোম্যানি:

  • অন্যান্য সত্তাও পরিচালনা করতে পারেন
  • টেবিল বা কলামে যোগ দিন সাধারণত আইডি রেফারেন্স থাকে

1

@ElementCollectionএকটি সংগ্রহ চিহ্নিত। এর অর্থ এই নয় যে এই সংগ্রহটি 1-এন যোগদানের উল্লেখ করেছে।


1
তাহলে @ এলিমেন্টক্লিকেশনের উদ্দেশ্যটি ঠিক কী?
n_g

0

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

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