9-modul · 4-dars: Spring Data JPA
Daraja: Ilg'or
Spring Data JPA. Spring Boot bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Spring Data JPA tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Spring Data JPA repository abstraksiyasi bilan JPA ishlatishni soddalashtiradi; JPA spetsifikatsiya, Hibernate implementation, Spring Data esa ularning ustidagi repository infratuzilmasidir. CrudRepository asosiy CRUDni, JpaRepository JPAga xos va qo'shimcha repository imkoniyatlarini beradi. Interface meroslari versiyalar orasida o'zgarishi mumkin, contractni dependencyga mos ko'ring. Derived query metod nomidan so'rov tuzadi; @Query explicit JPQL yoki native SQL beradi. @Modifying update/delete query ekanini bildiradi, lekin kerakli tranzaksiyani o'zi barcha holatda yaratib bermaydi. Bulk update persistence contextdagi eski obyektlar bilan nomuvofiqlik keltirishi mumkin; clear/refresh siyosatini belgilang. @Transactional servis amalining chegarasini belgilaydi. Projection interface yoki DTO ko'rinishida faqat kerakli maydonlarni oladi. Auditing created/modified vaqt va muallifni yuritadi; AuditingEntityListener va tegishli konfiguratsiya zarur. Page count so'rovi talab qilishi mumkin, Slice faqat keyingi sahifa borligini bildiradi. N+1 va cheksiz findAllni production ma'lumoti bilan o'lchang.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/9-module%28Spring%20Boot%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
interface StudyRepository extends org.springframework.data.jpa.repository.JpaRepository<StudyNote, Long> {
org.springframework.data.domain.Page<StudyNote> findByTitleContainingIgnoreCase(
String title, org.springframework.data.domain.Pageable pageable);
}
Keng tarqalgan xatolar
- Repositorydan qaytgan entityning lazy propertylarini yopilgan tranzaksiyadan keyin serializatsiya qilmang.
Mashqlar
- Filtrlangan ro'yxat uchun projection yarating; 100 ta yozuvda SQL soni va response hajmini o'lchang.
- Metod nomidan hosil bo'ladigan so'rov yozing va uni @Query bilan qayta yozib solishtiring.
Teglar: modul-09, pdp, nazariya