Core Concepts
- Introduction to Spring Data JPA
- Spring Data JPA vs Hibernate vs JDBC
- Setting up Spring Boot with Spring Data JPA
- Configuring DataSource, EntityManager, and Transactions
- Spring Data JPA Annotations (e.g., @Entity, @Table, @Id, @GeneratedValue)
Repositories in Spring Data JPA
- CrudRepository, PagingAndSortingRepository, and JpaRepository
- Custom Query Methods in Repository (Derived Query Methods)
- JPQL (Java Persistence Query Language) Queries
- Native SQL Queries using @Query Annotation
- Named Queries (@NamedQuery and @NamedNativeQuery)
- Specification API (Dynamic Queries using Criteria API)
- Projections (DTO-Based Query Results)
Entity Relationships & Mapping
- One-to-One Mapping
- One-to-Many & Many-to-One Mapping
- Many-to-Many Mapping
- Cascade Types in JPA
- Fetch Types (EAGER vs LAZY Loading)
- Join Fetch & Entity Graphs for Performance Optimization
Transactions and Performance Tuning
- Understanding Spring Transactions with @Transactional
- Optimistic vs Pessimistic Locking (@Version & LockModeType)
- N+1 Query Problem and Solutions (JOIN FETCH, Batch Fetching)
- Caching in JPA (First-Level & Second-Level Caching with EhCache, Hazelcast, Redis)
- Batch Processing and Bulk Inserts/Updates
Advanced JPA Topics
- Soft Deletes using @SQLDelete and @Where
- Auditing with @CreatedDate, @LastModifiedDate, and Envers
- Multi-Tenancy Implementation with Spring Data JPA
- Stored Procedures and Function Calls in JPA
- Entity Inheritance Strategies (SINGLE_TABLE, JOINED, TABLE_PER_CLASS)
- Using Specification API with Criteria Queries
Testing & Debugging
- Testing Spring Data JPA Repositories with H2 Database
- Using Testcontainers for Database Integration Testing
- Logging SQL Queries for Debugging (spring.jpa.show-sql=true, Hibernate Interceptor)
Integration with Other Technologies
- Spring Data JPA with Spring Boot & REST APIs
- GraphQL with Spring Data JPA
- Spring Data JPA with Kafka, RabbitMQ for Event-Driven Applications
- Spring Data JPA with Elasticsearch, MongoDB, and Redis
- Spring Data JPA with Microservices (Saga Pattern, Outbox Pattern)
Comments
Post a Comment