জাভা অধ্যবসায় / জেপিএ: @ কলাম বনাম @ বেসিক


119

জেপিএ-তে টীকা @Columnএবং পার্থক্য কী @Basic? তারা একসাথে ব্যবহার করা যাবে? করা উচিত তারা একসাথে ব্যবহার করা যেতে? বা তাদের একটি কি যথেষ্ট?

উত্তর:


147
  • @Basicউল্লেখ করে যে কোনও বৈশিষ্ট্য বজায় রাখতে হবে এবং একটি মানক ম্যাপিং ব্যবহার করতে হবে। এটিতে প্যারামিটার রয়েছে যা আপনাকে উল্লেখ করতে দেয় যে অ্যাট্রিবিউটটি অলসভাবে লোড করা হবে কিনা এবং এটি অযোগ্য কিনা specify

  • @Column আপনাকে ডাটাবেসে কলামের নাম নির্দিষ্ট করতে দেয় যার সাথে অ্যাট্রিবিউটটি বজায় রাখতে হয়।

যদি আপনি অন্যটি ব্যতীত একটি নির্দিষ্ট করে থাকেন তবে আপনি ডিফল্ট আচরণ পান যা বুদ্ধিমান, তাই সাধারণত লোকেরা বিশেষ ক্ষেত্রে বাদে শুধুমাত্র একটি ব্যবহার করে।

সুতরাং আমরা যদি কোনও অ্যাট্রিবিউটের অলস লোডিং করতে চাই এবং একটি কলামের নাম নির্দিষ্ট করতে পারি তবে আমরা বলতে পারি

 @Basic(fetch=FetchType.LAZY)
 @Column(name="WIBBLE")

যদি আমরা ডিফল্ট, অলস আচরণের প্রয়োজন হয় তবে কেবল @Columnযথেষ্ট ছিল।


2
এটি একটি পরিষ্কার উত্তর। ধন্যবাদ. সুতরাং আমি ধরে নিই যে কেউ এটির ব্যবহার @Basicছাড়াই করতে পারে @Column, যার কারণে উভয়টিতেই optionalএবং nullableবৈশিষ্ট্যগুলি বিদ্যমান। আমি কি সঠিক?
হোসাম এলি

1
@ বেসিকের অবনমিত এবং @ কলামের ক্ষুদ্র এবং এর মধ্যে পার্থক্য এবং উভয়ই বা উভয়ই নির্দিষ্ট করে দেওয়ার প্রভাবের বিষয়ে আমি জেপিএ স্পেসটি সম্পূর্ণরূপে বোঝার দাবি করি না। @ বেসিক নালাগুলি স্কিমার উত্পন্নকরণের সাথে সম্পর্কিত হিসাবে "ইঙ্গিত" হিসাবে বর্ণনা করা হয়েছে। @ কলাম কণ্ঠনাময় ডাটাবেসে কলামের বৈশিষ্ট্যগুলি সংজ্ঞায়িত হিসাবে বর্ণনা করা হয়। আমার অনুশীলনটি হ'ল @ কলাম কেসটি ব্যবহার করা হবে।
djna

16
@ বেসিক (alচ্ছিক) ডিবিতে সংরক্ষণ করার আগে অধ্যবসায় সরবরাহকারী দ্বারা রানটাইমটিতে পরীক্ষা করা উচিত (হওয়া উচিত)। @Column ডাটাবেসের মধ্যে একটি কলাম সংজ্ঞা নেই এবং স্কিমা প্রজন্মের জন্য ব্যবহার করা হয়: stackoverflow.com/questions/2899073/...
পাযত্র Gwiazda

2
এটিকে 'অলস' বলে E উচ্চহাস্য
solvator

7
জেপিএ টীকাগুলি দুটি গ্রুপে বিভক্ত করা যেতে পারে: খাঁটি সম্পর্কের টীকা বনাম বাস্তবায়ন টীকাগুলি। খাঁটি সম্পর্কযুক্ত টীকাগুলিতে রয়েছে: সত্তা, বেসিক, ওয়ানটোইন, ওয়ানটোম্যানি, ম্যান্টিটোম্যানি, ... যখন বাস্তবায়নের টীকাগুলি খাঁটি তাত্ত্বিক মডেলটিকে কীভাবে একটি বাস্তব ডাটাবেসে মানচিত্রিত করতে পারে তার একটি সূত্র দেয়: সারণী, কলাম, ... আপনার প্রশ্নে 'বেসিক 'রিলেশনাল সত্তা বৈশিষ্ট্য সম্পর্কে তথ্য সরবরাহ করার জন্য একটি টিকা থাকে যখন' কলাম 'এটি কীভাবে ডেটাবেস কলামে ম্যাপ করবেন সে সম্পর্কিত তথ্য সরবরাহ করে।
ব্রুনো র্যানচেয়ার্ট

50

@ ডিজেএনএর উত্তর ছাড়াও , এটির @Basicসাথে তুলনা করা উচিত @OneToMany, @ManyToOneএবং লক্ষণীয় @ManyToMany। এর মধ্যে একটির যেকোন সম্পত্তিতে নির্দিষ্ট করা যেতে পারে।

@Columnএবং @JoinColumnডাটাবেস কলামের বৈশিষ্ট্যগুলি বর্ণনা করতে এগুলির সাথে নির্দিষ্ট করে নির্দিষ্ট করা যেতে পারে।

এগুলি দুটি টীকাগুলি যা একসাথে ব্যবহার করা যেতে পারে তবে প্রতিটি সেটের একটি মাত্র টীকাগুলি একসাথে ব্যবহার করা যেতে পারে।


21

এটি লক্ষণীয় যে বেসিক আদিম ক্ষেত্রগুলির জন্য ডিজাইন করা হয়েছে

http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes

একটি মৌলিক বৈশিষ্ট্য হ'ল এমন একটি যেখানে বৈশিষ্ট্য শ্রেণি স্ট্রিং, সংখ্যা, তারিখ বা আদিম হিসাবে একটি সাধারণ প্রকার। একটি মৌলিক বৈশিষ্ট্যের মান ডাটাবেসে কলাম মানটিতে সরাসরি ম্যাপ করতে পারে।

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

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


ভাল নোট। ধন্যবাদ.
হোসাম অলি

1
না, যদি কোনও কলাম টীকা নির্দিষ্ট না করা থাকে, তবে ডিফল্ট মানগুলি প্রয়োগ হয় (নামটি বৈশিষ্ট্যের এক হবে)।
গ্যাব

2

@ বেসিক টীকাগুলি জেপিএ সত্তাগুলিতে প্রয়োগ করা হয়, এবং @ কলামের ডেট ডাটাবেস কলামগুলিতে প্রয়োগ করা হয় @ বেসিক টীকাগুলির alচ্ছিক বৈশিষ্ট্যটি সুনির্দিষ্ট ক্ষেত্রটি নাল হতে পারে কিনা তা নির্ধারণ করে; অন্য দিকে,

  • @ কলাম টীকাটির নালামযুক্ত বৈশিষ্ট্যটি উল্লেখ করে যে সংশ্লিষ্ট ডাটাবেস কলামটি বাতিল হতে পারে specif
  • ক্ষেত্রটি অলসভাবে লোড করা উচিত তা বোঝাতে আমরা @ বেসিক ব্যবহার করতে পারি
  • @ কলাম টীকা আমাদের ম্যাপ করা ডাটাবেস কলামের নাম নির্দিষ্ট করার অনুমতি দেয়
  • @ বেসিক টীকাটি সম্পত্তিটিকে জাভা অবজেক্ট পর্যায়ে optionচ্ছিক হিসাবে চিহ্নিত করে না। এবং (কণ্ঠ্য = মিথ্যা) কলাম ম্যাপিংয়ের ক্ষেত্রে কেবল নট ডাটাবেস সীমাবদ্ধতার জন্যই দায়বদ্ধ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.