জেপিএতে @ বেসিক (alচ্ছিক = মিথ্যা) বনাম @ কলাম (অবিচ্ছিন্ন = মিথ্যা)


106

জেপিএ অধ্যবসায়ের মধ্যে @Basic(optional = false)এবং @Column(nullable = false)মধ্যে পার্থক্য কী ?



14
সত্যই কোনও সদৃশ নয়, প্রশ্নটি বৈশিষ্ট্যগুলি সম্পর্কে বেশি, টীকাগুলি নয়।
পাস্কাল থিভেন্ট

এটি আরও সাহায্য করতে পারে স্ট্যাকওভারফ্লো.com
সোনু প্যাটেল

উত্তর:


100

গর্ডন ইওর্ক (এক্সিলিপলিংক আর্কিটেকচার কমিটির সদস্য, টপলিংক কোর টেকনিক্যাল লিড, জেপিএ ২.০ বিশেষজ্ঞ গ্রুপের সদস্য) এই বিষয়ে একটি ভাল উত্তর লিখেছিলেন যাতে তাকে প্যারাফ্রেস না করে আমি তার উত্তরটি উদ্ধৃত করব :

এর মধ্যে পার্থক্য optionalএবং nullableসেই সুযোগটি যেখানে তারা মূল্যায়ন করা হয়। ' optional' এর সংজ্ঞা সম্পত্তি এবং ক্ষেত্রের মান সম্পর্কে আলোচনা করে এবং পরামর্শ দেয় যে রানটাইমের মধ্যে এই বৈশিষ্ট্যটি মূল্যায়ন করা উচিত। ' nullable' কেবল ডাটাবেস কলামের ক্ষেত্রেই উল্লেখ করা যায়।

যদি কোনও বাস্তবায়ন প্রয়োগ করতে পছন্দ করে optionalতবে সেই বৈশিষ্ট্যগুলি দৃ memory়তা সরবরাহকারী দ্বারা মেমোরিতে মূল্যায়ন করা উচিত এবং এসকিউএল ডেটাবেজে প্রেরণের আগে উত্থাপিত একটি ব্যতিক্রম অন্যথায় ' updatable=false' ' optional' লঙ্ঘনের ক্ষেত্রে কখনই রিপোর্ট করা হবে না।


8
সুতরাং, যা সত্যই ব্যবহার করা উচিত, উভয়?
Xiè Jìléi

39
@ জি জিলি: বই থেকে: হাইবারনেট 2007 এর সাথে জাভা জেদ, পি। 179: @Basic(optional = false) @Column(nullable = false)@ বেসিক টীকাটি সম্পত্তিটিকে জাভা অবজেক্ট স্তরে optionচ্ছিক হিসাবে চিহ্নিত করে না। দ্বিতীয় সেটিংটি, কলাম ম্যাপিংয়ের ক্ষেত্রে nullable = মিথ্যা, কেবল একটি নট ডাটাবেস সীমাবদ্ধতার জন্যই দায়বদ্ধ। হাইবারনেট জেপিএ বাস্তবায়ন উভয় বিকল্পকে যে কোনও ক্ষেত্রে একইভাবে আচরণ করে, সুতরাং আপনি এই উদ্দেশ্যে কেবলমাত্র একটি টীকা ব্যবহার করতে পারেন।
আবিষ্ট

4
@ আর্যাপ্ট - আমি বুঝতে পারি না এর The @Basic annotation marks the property as not optional on the Java object level.অর্থ কী? সুতরাং, কেবল @Basicবলার মতোই NOT NULLকি ভেরিয়েবলের জন্য ডাটাবেস কলাম তৈরি করা যায় ?
এরান মোরাড

9
এর অর্থ, আপনি যদি নাল ক্ষেত্রের সাথে কোনও সত্তাকে অবিচলিত রাখার চেষ্টা করেন তবে এটি একটি ব্যতিক্রম ছুঁড়ে ফেলবে যদি এটি alচ্ছিক = মিথ্যা হিসাবে চিহ্নিত করা হয় (ডাটাবেসের সাথে যোগাযোগ না করে) এবং সত্তাটি জেপিএ অধ্যবসায় প্রসঙ্গে যুক্ত করা হবে না। যদি এটি কেবল nullable = মিথ্যা বলে চিহ্নিত করা হয় তবে অস্তিত্বটি অধ্যবসায় প্রসঙ্গে যুক্ত করা হবে এবং ডাটাবেসে সত্তা লেখার চেষ্টা করার সময় (উদাহরণস্বরূপ ফ্লাশের মাধ্যমে) এটি ডাটাবেসে সত্তাটি লেখার চেষ্টা করবে যা এটি অস্বীকার করবে এবং এটি তখন একটি ব্যতিক্রম ছুঁড়ে ফেলবে।
রায় হুলহা

@ রায়হুলা আমি "@ বেসিক (alচ্ছিক = মিথ্যা)" দিয়ে একটি ক্ষেত্রটি বৌদ্ধিক করার চেষ্টা করেছি এবং আমি ডাটাবেজে একটি টুপল যোগ করেছি (এই ক্ষেত্রের মান = নাল), কোনও ব্যতিক্রম উত্থাপিত হয়নি !!, আমি আশা করি আপনি ব্যাখ্যা করতে পারবেন আমার কাছে এই আচরণ
ziMtyth

4

সুতরাং আমি জেপিএ ২.১ (একলিপস লিঙ্ক) ব্যবহার করে @ বেসিক (otচ্ছিক = মিথ্যা) টীকাগুলি চেষ্টা করেছিলাম এবং এটি প্রমাণিত হয় যে টীকাটি প্রকৃত ব্যবহারের ক্ষেত্রে উপেক্ষা করা হয় (কমপক্ষে কোনও স্ট্রিংয়ের ক্ষেত্রে)। (যেমন, অ্যান্টিম্যানএজআরপিস্টিস্ট কল)।

সুতরাং আমি স্পেসিফিকেশন গিয়েছিলাম এবং এটি সম্পর্কে পড়তে। এখানে অনুমানের কথাটি বলতে হবে:
http://download.oracle.com/otndocs/jcp/persistance-2.0-fr-oth-JSpec/

বেসিক (alচ্ছিক): ক্ষেত্র বা সম্পত্তির মান শূন্য হতে পারে কিনা। এটি একটি ইঙ্গিত এবং আদিম ধরণের জন্য উপেক্ষা করা হয়; এটি স্কিমা জেনারেশনে ব্যবহৃত হতে পারে।

সুতরাং আমি মনে করি এই বাক্যটি বেসিক (alচ্ছিক) এর বাস্তব ব্যবহারের ক্ষেত্রটি ব্যাখ্যা করে যা এটি স্কিমা জেনারেশনে ব্যবহৃত হয়। (এটি হ'ল: আপনি যখন জাভা সত্তা ক্লাসগুলি থেকে টেবিল তৈরি করুন এসকিউএল তৈরি করবেন Hi উদাহরণস্বরূপ হাইবারনেট এটি করতে পারে))


4
এটি মজার বিষয় যে অন্য উত্তরটি বোঝায় যে এটি হ্রাসযোগ্য এবং বেসিক নয় যা স্কিমা প্রজন্মের জন্য ব্যবহৃত হয় (যখন এটি বলে যে n 'nullaable' কেবল ডাটাবেস কলামগুলির সাথে সম্পর্কিত ») is এটি এখনও খুব বিভ্রান্তিকর। আমার ধারণা অনুমানযোগ্য স্কিমি উত্পন্নকরণের জন্য ব্যবহৃত হয় এবং বেসিক ( alচ্ছিক = মিথ্যা) একই উদ্দেশ্যে ব্যবহার করা যেতে পারে? যে জানার জন্য?
মারকাস

optional = falseশুধুমাত্র রানটাইমে এই সীমাবদ্ধতা যাচাই করার জন্য। nullable = falseডাটাবেস সীমাবদ্ধতা তৈরি করে। অ্যাপ্লিকেশনগুলির জন্য, সেটটিও optional = falseবোধগম্য হয়, কারণ এটি ডাটাবেসে যাওয়ার চেয়ে দ্রুত মূল্যায়ন করা হয় এবং সেখানে সেই সীমাবদ্ধতা পরীক্ষা করে দেখুন ..
নিমো 23
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.