7-modul · 8-dars: Associations · Cascade · Converter
Daraja: Ilg'or
Associations · Cascade · Converter. Jakarta EE bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Associations · Cascade · Converter tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya JPA associationlari OneToOne, OneToMany, ManyToOne va ManyToManydir. Owning side tashqi kalit yoki join table mappingini boshqaradi; mappedBy ikkinchi tomondagi property nomiga ishora qiladi, ustun nomiga emas. Ikki yo'nalishli bog'lanishda Java obyektlarining ikkala tomonini ham izchil yangilang. Cascade PERSIST, MERGE yoki REMOVE kabi amallarni bog'langan entityga tarqatadi; fetch strategiyasi emas. orphanRemoval collectiondan ajratilgan bola yozuviga ta'sir qilishi mumkin. LAZY bog'liq ma'lumotni keyin yuklashga imkon beradi; context yopilgach kerakli ma'lumot hali yuklanmagan bo'lishi mumkin. EAGER ham bitta SQL kafolati emas, N+1 hosil qilishi mumkin. Embeddable mustaqil identifikatsiyasiz value objectni, Embedded esa uning entitydagi joyini belgilaydi. AttributeConverter Java qiymati bilan DB ustuni orasida aylantiradi. NamedQuery nom bilan qayta ishlatiladigan JPQLni e'lon qiladi. REST javobida entityni to'g'ridan-to'g'ri chiqarishdan ko'ra DTO va kerakli fetch plan orqali rekursiya hamda maxfiy maydon chiqishini oldini oling.
## 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
@jakarta.persistence.ManyToOne(fetch = jakarta.persistence.FetchType.LAZY)
@jakarta.persistence.JoinColumn(name = "owner_id")
private User owner;
// User shu persistence unitdagi entity bo'lishi kerak.
Keng tarqalgan xatolar
- ManyToManyga CascadeType.REMOVE qo'yish umumiy foydalaniladigan yozuvlarni ham o'chirishi mumkin.
Mashqlar
- User va Entry bog'lanishining owning sideni belgilang; ro'yxat API uchun nechta SQL ishlaganini o'lchang.
- OneToMany bog'lanish yozib, cascade bilan va cascadesiz o'chirish natijasini solishtiring.
Teglar: pdp, modul-07, nazariya