🗄️
Data Access

Spring Data JPA

Database Access Made Easy
💡 Spring Data JPA ek UNIVERSAL TRANSLATOR hai — tum Java mein "sochte" ho (objects, methods), Spring Data JPA background mein SQL mein TRANSLATE kar deta hai, database se baat karta hai, aur result WAAPAS Java objects mein translate karके tumhe deta hai.

Spring Data JPA, JPA (Java Persistence API) ke UPAR ek CONVENIENCE layer hai — ORM (Object-Relational Mapping) provide karta hai, matlab Java OBJECTS aur DATABASE TABLES ke beech AUTOMATIC mapping. @Entity annotation ek Java class ko DATABASE TABLE se JODती hai, @Id primary key batata hai.

SABSE BADA fayda — REPOSITORY INTERFACES se, boilerplate CRUD code (save, findById, findAll, delete) COMPLETELY ELIMINATE ho jaata hai. Tumhe SIRF ek interface define karni hai, Spring Data JPA RUNTIME par AUTOMATICALLY implementation generate kar deta hai.

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;
    private String email;
    // getters, setters
}

public interface UserRepository extends JpaRepository<User, Long> {
    // KUCH bhi likhne ki zaroorat nahi — save(), findById(), findAll(),
    // delete() SAB automatically available hain JpaRepository se
}
🗄️
Spring Data JPA ek UNIVERSAL TRANSLATOR hai — tum Java mein "sochte" ho (objects, methods), Spring Data JPA background mein SQL mein TRANSLATE kar deta hai, database se baat karta hai, aur result WAAPAS Java objects mein translate karके tumhe deta hai.
1 / 6
⚡ Quick Recap
  • @Entity = Java class ↔ database table ka mapping
  • Repository interfaces = CRUD boilerplate automatically eliminate
  • ORM = Object-Relational Mapping, Java objects ↔ SQL tables
Is page mein (2 subtopics)

JPA (Java Persistence API) ek SPECIFICATION hai (interface, standard) — ye khud koi code IMPLEMENT nahi karta. Hibernate JPA ka MOST POPULAR implementation hai (actual code jo kaam karta hai). Spring Data JPA Hibernate ke UPAR ek ABSTRACTION layer hai — repository interfaces se, boilerplate CRUD code ELIMINATE karta hai.

💡Tip: Teeno LAYERS hain — JPA (spec) → Hibernate (implementation) → Spring Data JPA (convenience layer). Application code zyaadatar Spring Data JPA ke saath kaam karta hai, neeche ke layers "invisible" rehte hain.

JPA entities ke beech relationships annotations se define hoti hain — @OneToMany (ek Order ke MULTIPLE OrderItems), @ManyToOne (MULTIPLE OrderItems ka EK Order), @ManyToMany (Student aur Course, dono taraf multiple). FetchType.LAZY (default @OneToMany ke liye) related data TABHI load karta hai jab ACTUALLY access ho.

@Entity
public class Order {
    @Id @GeneratedValue
    private Long id;

    @OneToMany(mappedBy = "order", fetch = FetchType.LAZY)
    private List<OrderItem> items;
}