🗄️
Data & Persistence

Spring Data JPA in Spring Boot

Auto-Configured Persistence
💡 Plain Spring mein JPA setup karna ek CAR ko MANUALLY ASSEMBLE karne jaisa hai — ENGINE (Hibernate), TRANSMISSION (EntityManagerFactory), WIRING (TransactionManager) SAB SEPARATELY CONNECT karne padte hain. Spring Boot mein, EK DEPENDENCY (starter-data-jpa) ADD karте hi, POORI CAR, READY-TO-DRIVE STATE mein MIL jaati hai.

spring-boot-starter-data-jpa DEPENDENCY ADD karте hi, Spring Boot AUTOMATICALLY DataSource, EntityManagerFactory, aur TransactionManager — TEENO ko CONFIGURE kar deta hai, agar DATABASE DRIVER (jaise H2 ya PostgreSQL driver) classpath par PRESENT hai. Ye "AUTO-CONFIGURATION" ka EK PRIME EXAMPLE hai jo TUM PEHLE SEEKH CHUKE ho.

Repository INTERFACES (JpaRepository extend karne wali) AUTOMATICALLY DISCOVER hoती hain — @EnableJpaRepositories MANUALLY LAGANE ki zaroorat NAHI, jaisa PURANE, PLAIN Spring projects mein PADTA THA. spring.jpa.hibernate.ddl-auto PROPERTY se, DATABASE SCHEMA management CONTROL hota hai — update (dev), validate (prod), none (agar Flyway/Liquibase use ho raha ho).

// pom.xml — EK dependency, SAB kuch auto-configured:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>runtime</scope>
</dependency>

// Repository — AUTOMATICALLY discover hoती hai, koi extra config nahi:
public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByEmail(String email);
}

// application.properties:
spring.jpa.hibernate.ddl-auto=update   // dev mein
spring.jpa.show-sql=true                // debugging ke liye SQL logs
🗄️
Plain Spring mein JPA setup karna ek CAR ko MANUALLY ASSEMBLE karne jaisa hai — ENGINE (Hibernate), TRANSMISSION (EntityManagerFactory), WIRING (TransactionManager) SAB SEPARATELY CONNECT karne padte hain. Spring Boot mein, EK DEPENDENCY (starter-data-jpa) ADD karте hi, POORI CAR, READY-TO-DRIVE STATE mein MIL jaati hai.
1 / 6
⚡ Quick Recap
  • starter-data-jpa = DataSource + EntityManagerFactory + TransactionManager, SAB auto-configured
  • Repository interfaces AUTOMATICALLY discover hoti hain
  • ddl-auto: update (dev) vs validate/none (prod, MIGRATION tools ke saath)
Is page mein (2 subtopics)

Is EK starter mein, Spring Data JPA, Hibernate (default JPA implementation), aur Spring ORM — SAB, COMPATIBLE VERSIONS mein, MIL jaate hain. Manually IN THREE libraries ke VERSIONS MATCH karna, EK COMMON, FRUSTRATING task hota tha PURANE Spring projects mein.

💡Tip: spring.jpa.hibernate.ddl-auto property IMPORTANT hai — update (DEV mein, schema AUTO-adjust) vs validate (PROD mein, sirf CHECK karo, MODIFY NAHI karo) vs none (migrations tools jaise Flyway use karте waqt).

Spring Boot AUTOMATICALLY JpaRepository INTERFACES ko DISCOVER karta hai (component scanning ke SIMILAR MECHANISM se) — @EnableJpaRepositories MANUALLY LAGANE ki zaroorat NAHI, AUTO-CONFIGURATION YE AUTOMATICALLY HANDLE karta hai.

  • Plain Spring mein, @EnableJpaRepositories MANUALLY lagana padta tha
  • Spring Boot mein, AUTO-CONFIGURATION se, YE AUTOMATIC hai