7-modul · 9-dars: Bean Validation
Daraja: Ilg'or
Bean Validation. Jakarta EE bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Bean Validation tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Jakarta Bean Validation obyekt qiymatlariga deklarativ cheklov qo'yadi. NotNull faqat nullni, NotBlank null va whitespace matnni, Size esa uzunlik yoki element sonini tekshiradi. Min, Max va Pattern boshqa qoidalarni ifodalaydi. Validatsiya ma'lumot bazasidagi UNIQUE yoki FOREIGN KEY o'rnini bosmaydi: parallel so'rovlar DB constraint bilan himoyalanadi. ValidatorFactory provider konfiguratsiyasini tayyorlaydi, Validator esa obyektni tekshirib ConstraintViolationlar to'plamini qaytaradi. Ichki obyektlar uchun @Valid bilan kaskad validatsiya talab qilinadi. Spring MVCda request DTO ustidagi @Valid kiruvchi qiymatlarni controller ishidan oldin tekshirishga yordam beradi; biznesga bog'liq tekshiruv servisda qoladi. Custom constraint annotation, ConstraintValidator implementationi va message bilan quriladi. Validator ichidagi null siyosatini aniq belgilang; nullni odatda alohida NotNullga qoldirish qulay. Xato javobida field nomi va tushunarli xabar bering, parol yoki tokenning rejected value qiymatini qaytarmang.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/7-module%28Jakarta%20EE%29.md) [Rasmiy qo‘llanma](https://jakarta.ee/specifications/)
Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.
Kod misoli
record CreateNote(
@jakarta.validation.constraints.NotBlank
@jakarta.validation.constraints.Size(max = 120) String title) {}
// Controllerda: create(@Valid @RequestBody CreateNote request)
Keng tarqalgan xatolar
- @Valid yo'q nested obyektning annotationlari o'z-o'zidan ishlashiga ishonmang.
Mashqlar
- Bo'sh, null, chegaradagi va haddan tashqari uzun title uchun to'rtta test yozing.
- Nested obyektga @Valid qo'yib va qo'ymay, validatsiya ishlashini tekshiring.
Teglar: pdp, modul-07, nazariya