10-modul · 2-dars: Spring Data MongoDB
Daraja: Ilg'or
Spring Data MongoDB. Advanced backend bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Spring Data MongoDB tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya MongoDB sync driverda MongoClient ulanish pooli va client lifecycle, MongoDatabase database, MongoCollection esa document amallarini ifodalaydi. Clientni har requestda qayta yaratmang; ilova lifecycle davomida boshqarib, yopilishda yoping. Filters va Sorts yordamchilari query tuzishni tushunarli qiladi. Spring Data MongoDB repository, mapping va MongoTemplate bilan driver ustida abstraksiya beradi. @Document collectionni, @Id identifikatorni, @Field saqlanadigan field nomini belgilaydi. @Indexed index niyatini ifodalaydi, ammo avtomatik index yaratish konfiguratsiyasiga ko'r-ko'rona tayanmang: production indekslarini nazoratli chiqaring. MongoTemplate murakkab Query, Criteria, Update va aggregation uchun mos; repository oddiy derived query va paging uchun qulay. Pageable bilan sahifalashda sortni aniq belgilang. Projection faqat kerakli fieldlarni oladi. Domain obyektni API DTOga ajrating; _id mappingi va ObjectId/string aylanishi uchun test yozing. MongoDB persistence context va lazy associationlari JPA bilan bir xil ishlaydi deb hisoblamang.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/10-module%28Spring%20Boot%20Part%20%7C%7C%29.md) [Rasmiy qo‘llanma](https://docs.spring.io/spring-boot/reference/)
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
@org.springframework.data.mongodb.core.mapping.Document("notes")
record MongoNote(@org.springframework.data.annotation.Id String id, String title) {}
interface NoteRepo extends org.springframework.data.mongodb.repository.MongoRepository<MongoNote,String> {
org.springframework.data.domain.Page<MongoNote> findByTitle(
String title, org.springframework.data.domain.Pageable page);
}
Keng tarqalgan xatolar
- @Indexed yozilganining o'zi barcha muhitda kerakli index bazada borligini isbotlamaydi.
Mashqlar
- Repository va MongoTemplate bilan bir xil filtrni yozing; natija hamda index mavjudligini tekshiring.
- Mongo repository yozib, indeks bilan va indekssiz so'rov vaqtini o'lchang.
Teglar: pdp, nazariya, modul-10