হাইবারনেট ভ্যালিডেটর ৪.১++ এ, @ নটনুল, @ নটএম্প্টি এবং @ নটব্ল্যাঙ্কের মধ্যে পার্থক্য কী?


114

এই তিনটি টীকাগুলির মধ্যে পার্থক্যকে আলাদা করে এমন একটি সংক্ষিপ্তসার আমি খুঁজে পেতে সক্ষম হতে পারছি বলে মনে হচ্ছে না।

উত্তর:


314

@NotNull: চারসেকেন্স, সংগ্রহ, মানচিত্র বা অ্যারে অবজেক্টটি শূন্য নয় , তবে খালি থাকতে পারে।
@NotEmpty: চারসেকেন্স, সংগ্রহ, মানচিত্র বা অ্যারে অবজেক্ট নাল এবং আকার নয়> 0
@NotBlank: স্ট্রিংটি নাল নয় এবং ছাঁটাই দৈর্ঘ্য শূন্যের চেয়ে বড়

আপনাকে বুঝতে সাহায্য করার জন্য, আসুন কীভাবে এই সীমাবদ্ধতাগুলি সংজ্ঞায়িত করা হয় এবং পরিচালনা করা হয় (আমি সংস্করণ 4.1 ব্যবহার করছি):

  1. @NotNullবাধ্যতা হিসাবে সংজ্ঞায়িত করা হয়:

    @Constraint(validatedBy = {NotNullValidator.class})  

    এই শ্রেণীর একটি isValidপদ্ধতি রয়েছে যেমন:

    public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {
     return object != null;  
    }
    
  2. @NotEmptyবাধ্যতা হিসাবে সংজ্ঞায়িত করা হয়:

    @NotNull  
    @Size(min = 1)    
    

    সুতরাং এই সীমাবদ্ধতা উপরের সীমাবদ্ধতাটি ব্যবহার করে এবং যার সংজ্ঞাটি অবজেক্টের উপর ভিত্তি করে পৃথক হয় তবে স্ব-বর্ণনামূলক হওয়া উচিত। @NotNull @Size

  3. পরিশেষে, @NotBlankসীমাবদ্ধতাটি হিসাবে সংজ্ঞায়িত করা হয়:

    @NotNull  
    @Constraint(validatedBy = {NotBlankValidator.class})        
    

    সুতরাং এই সীমাবদ্ধতা এছাড়াও সীমাবদ্ধতা ব্যবহার করে @NotNull, তবে নটব্ল্যাঙ্কভালিডেটর শ্রেণীর সাথেও সীমাবদ্ধ। এই শ্রেণীর একটি isValidপদ্ধতি রয়েছে যেমন:

    if ( charSequence == null ) {  //curious 
      return true;   
    }   
    return charSequence.toString().trim().length() > 0;  
    

    মজার বিষয় হল, স্ট্রিংটি নাল থাকলে এই পদ্ধতিটি সত্য করে, তবে মিথ্যা এবং যদি কেবল ছাঁটাইযুক্ত স্ট্রিংয়ের দৈর্ঘ্য 0 হয় তবে এটি ঠিক যে এটি নাল হয়ে থাকলে এটি সত্য হবে কারণ আমি উল্লেখ করেছি, @NotEmptyসংজ্ঞাটিরও প্রয়োজন @NotNull

এখানে কিছু উদাহরণ আছে:

  1. স্ট্রিং নাম = নাল;
    @NotNull: মিথ্যা
    @NotEmpty: মিথ্যা
    @NotBlank: মিথ্যা

  2. স্ট্রিং নাম = "";
    @NotNull: সত্য
    @NotEmpty : মিথ্যা
    @NotBlank: মিথ্যা

  3. স্ট্রিং নাম = "";
    @NotNull: সত্য
    @NotEmpty : সত্য
    @NotBlank : মিথ্যা

  4. স্ট্রিং নাম = "দুর্দান্ত উত্তর!";
    @NotNull: সত্য
    @NotEmpty : সত্য
    @NotBlank : সত্য


29
আমি নিজে থেকে এই তথ্য সন্ধানের জন্য কিছু সময় ব্যয় করেছি এবং আমি অন্যদের সেই প্রচেষ্টা থেকে উপকৃত হতে সহায়তা করতে চেয়েছিলাম। "স্ফটিক পরিষ্কার করার জন্য, আপনার নিজের প্রশ্ন জিজ্ঞাসা করা এবং উত্তর দেওয়া কেবল ঠিক নয়, এটি স্পষ্টভাবে উত্সাহিত করা হয়েছে।" blog.stackoverflow.com/2011/07/…
রিক হ্যানলন II

4
আমার মতে, @ নটব্ল্যাঙ্কগুলি নালিশ গ্রহণ করা উচিত। এমন কিছু ক্ষেত্রে রয়েছে যা আপনি alচ্ছিক ক্ষেত্রগুলির জন্য নালাকে গ্রহণ করবেন যেখানে ফাঁকা কেবল অবৈধ।
tbraun

1
আমি এর সাথে একমত হই আপনি যদি শূন্য না চান এবং খালি না চান তবে আপনি উভয়ই ব্যবহার করতে পারেন। যেহেতু এটি নয়, আপনি নিজের বৈধ লেখক লিখতে পারেন এবং এটি আপনার প্রত্যাশা অনুযায়ী ব্যবহার করতে পারেন।
রিক হ্যানলন II

1
কেবল একটি নোট: @ নটনুল কেবল "চারসেকেন্স, সংগ্রহ, মানচিত্র বা অ্যারে" নয়, যে কোনও অবজেক্টের সাথে ব্যবহার করা যেতে পারে; প্রকৃতপক্ষে কোডটি আপনি 1 পয়েন্ট sertedোকানো।
নিকোলো

@ রিকহানলোনআইআই আপনি কী পরামর্শ দিতে পারেন যে এটি হাইবারনেট ভ্যালিডেটর 5+ এ কীভাবে বৈধ হয়ে উঠছে। আরConstraintValidator এই টীকাগুলির সাথে আর কোনও সম্পর্ক নেই বলে মনে হচ্ছে ।
স্টিভ

7

আমি নীচের লিঙ্কটিতে ব্যাখ্যাটি পছন্দ করেছি: http://www.itprogrammingtutorials.com/2015/java/hibernate/hibernate-ediaator-diff-notblank-notempty/

@ নটনুল: সামগ্রীটি উপেক্ষা করে মানটি শূন্য নয় কিনা তা পরীক্ষা করে

@ নোটএম্পটি: মানটি নাল বা খালি নয় কিনা তা পরীক্ষা করে। যদি এটির খালি জায়গা থাকে তবে এটি এটি খালি নয় হিসাবে অনুমতি দেবে।

@ নটব্ল্যাঙ্ক: মানটি নাল বা খালি নয় কিনা তা পরীক্ষা করে প্রথমে মানটি ছাঁটাচ্ছে। এর অর্থ এই যে এটি খালি জায়গাগুলি অনুমতি দেবে না।

সুতরাং, আপনি যদি যাচাই করতে চান যে কোনও ক্ষেত্রটি নাল নয় তবে এটিতে কেবল খালি স্থান নেই, তবে পাঠ্য রয়েছে, আপনার @ নটব্ল্যাঙ্ক ব্যবহার করা উচিত।


1
  1. @NotNull: একটি সীমাবদ্ধ চারসেকেন্স, সংগ্রহ, মানচিত্র বা অ্যারে যতক্ষণ তা বাতিল নয় ততক্ষণ বৈধ, তবে এটি খালি থাকতে পারে
  2. @NotEmpty: একটি সীমাবদ্ধ চরসেকেন্স, সংগ্রহ, মানচিত্র, বা অ্যারে যতক্ষণ তা বাতিল নয় এবং এর আকার / দৈর্ঘ্য শূন্যের চেয়ে বেশি ততক্ষণ বৈধ।
  3. @NotBlank: একটি বাধা স্ট্রিং যতক্ষণ না এটি নাল না এবং ছাঁটা দৈর্ঘ্য শূন্যের চেয়ে বেশি ততক্ষণ বৈধ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.