Spring Data रिपॉज़िटरी और क्वेरी विधियाँ
JpaRepository का विस्तार कीजिए, नामकरण परंपराओं से क्वेरी विधियाँ परिभाषित कीजिए और कस्टम JPQL के लिए @Query उपयोग कीजिए
Spring Data रिपॉज़िटरी और क्वेरी विधियाँ, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Spring Data JPA रिपॉज़िटरीज़
मुफ़्त में बनाने, पढ़ने, अपडेट करने, हटाने, पृष्ठांकन और क्रमबद्ध करने की विधियाँ पाने के लिए JpaRepository<Entity, ID> का विस्तार करें। स्प्रिंग स्टार्टअप के समय इम्प्लीमेंटेशन बनाता है — किसी SQL या DAO बॉयलरप्लेट की आवश्यकता नहीं होती।
public interface UserRepository extends JpaRepository<User, Long> {
// Free: findAll, findById, save, delete, count, existsById, etc.
}व्युत्पन्न क्वेरी विधियाँ
स्प्रिंग डेटा मेथड नामों से क्वेरी बनाता है। नामकरण परंपरा इस प्रकार है: findBy + प्रॉपर्टी + वैकल्पिक शर्तें।
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByStatus(UserStatus status);
Optional<User> findByEmail(String email);
List<User> findByAgeGreaterThanAndStatusOrderByNameAsc(int age, UserStatus s);
boolean existsByEmail(String email);
long countByStatus(UserStatus status);
}मेथड नामों में समर्थित कीवर्ड
मुख्य नामकरण कीवर्ड: And, Or, Is/Equals, Between, LessThan/GreaterThan, Like/NotLike, In/NotIn, IsNull/IsNotNull, OrderBy, First/Top।
List<User> findTop5ByStatusOrderByCreatedAtDesc(UserStatus s);
List<User> findByNameContainingIgnoreCase(String fragment);
List<User> findByCreatedAtBetween(LocalDateTime from, LocalDateTime to);कस्टम JPQL के लिए @Query
ऐसी जटिल क्वेरीज़ के लिए @Query का उपयोग करें जिन्हें मेथड नामों के रूप में व्यक्त नहीं किया जा सकता। JPQL में तालिका या कॉलम नामों के बजाय इकाई क्लासों के नाम और फ़ील्ड उपयोग किए जाते हैं।
@Query("SELECT u FROM User u WHERE u.email = :email AND u.status = :status")
Optional<User> findActiveByEmail(@Param("email") String email,
@Param("status") UserStatus status);
@Query("SELECT u.name, COUNT(o) FROM User u JOIN u.orders o GROUP BY u.name")
List<Object[]> countOrdersPerUser();मूल क्वेरीज़
कच्ची SQL लिखने के लिए nativeQuery = true का उपयोग करें। यह ON CONFLICT, विंडो फ़ंक्शन या पूर्ण-पाठ खोज जैसी डेटाबेस-विशिष्ट सुविधाओं के लिए उपयोगी है।
@Query(value = "SELECT * FROM users WHERE tsv @@ plainto_tsquery(:q)",
nativeQuery = true)
List<User> fullTextSearch(@Param("q") String query);@Modifying से क्वेरी में बदलाव करना
अद्यतन या हटाने वाली क्वेरीज़ पर @Modifying लगाएँ। @Transactional भी जोड़ें, क्योंकि बदलाव करने वाली क्वेरीज़ के लिए सक्रिय लेन-देन आवश्यक होता है।
@Modifying
@Transactional
@Query("UPDATE User u SET u.status = :s WHERE u.lastLogin < :cutoff")
int deactivateInactiveUsers(@Param("s") UserStatus s,
@Param("cutoff") LocalDateTime cutoff);व्युत्पन्न हटाने वाली विधियाँ
स्प्रिंग डेटा मेथड नामों से हटाने वाली क्वेरीज़ भी बनाता है — सफ़ाई के कामों के लिए यह सुविधाजनक है।
void deleteByStatus(UserStatus status);
long deleteByCreatedAtBefore(LocalDateTime cutoff);रिपॉज़िटरी स्लाइस: CrudRepository, PagingAndSortingRepository
जब आपको JpaRepository की सभी विधियों की आवश्यकता न हो, तब अधिक सीमित आधार इंटरफ़ेस का उपयोग करें। CrudRepository में बुनियादी CRUD सुविधाएँ होती हैं; PagingAndSortingRepository में findAll(Pageable) जुड़ जाता है।
public interface ReadOnlyUserRepository extends PagingAndSortingRepository<User, Long> {
// Only paging + sorting — no save/delete
}फ़ेच को अनुकूलित करने के लिए @EntityGraph
प्रत्येक क्वेरी के लिए डिफ़ॉल्ट फ़ेच रणनीति को बदलने हेतु @EntityGraph का उपयोग करें। इससे इकाई मैपिंग बदले बिना संबद्धताओं को तुरंत लोड किया जा सकता है।
@EntityGraph(attributePaths = {"orders", "orders.items"})
@Query("SELECT u FROM User u WHERE u.id = :id")
Optional<User> findWithOrders(@Param("id") Long id);कस्टम रिपॉज़िटरी इम्प्लीमेंटेशन
UserRepositoryCustom + UserRepositoryCustomImpl नामकरण परंपरा का पालन करते हुए एक इंटरफ़ेस और इम्प्लीमेंटेशन क्लास बनाकर कस्टम मेथड जोड़ें। स्प्रिंग उन्हें मिला देता है।
public interface UserRepositoryCustom {
List<User> searchByCriteria(UserSearchCriteria criteria);
}
public class UserRepositoryCustomImpl implements UserRepositoryCustom {
@PersistenceContext EntityManager em;
public List<User> searchByCriteria(UserSearchCriteria c) {
// use Criteria API or JdbcTemplate
}
}
public interface UserRepository extends JpaRepository<User,Long>, UserRepositoryCustom {}त्वरित जाँच
UPDATE/DELETE कथनों के साथ कौन-सा एनोटेशन आवश्यक है?
पुनरावलोकन
मुफ़्त CRUD सुविधाओं के लिए JpaRepository का विस्तार करें। सरल क्वेरीज़ के लिए व्युत्पन्न मेथड नामों का उपयोग करें। जटिल JPQL या मूल SQL के लिए @Query का उपयोग करें। अपडेट के लिए @Modifying+@Transactional का उपयोग करें। फ़ेचिंग को समायोजित करने के लिए @EntityGraph का उपयोग करें।
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “Spring Data रिपॉज़िटरी और क्वेरी विधियाँ” पाठ निःशुल्क है?
हाँ—“Spring Data रिपॉज़िटरी और क्वेरी विधियाँ” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Spring Data रिपॉज़िटरी और क्वेरी विधियाँ” में मैं क्या सीखूँगा?
JpaRepository का विस्तार कीजिए, नामकरण परंपराओं से क्वेरी विधियाँ परिभाषित कीजिए और कस्टम JPQL के लिए @Query उपयोग कीजिए आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Spring Data रिपॉज़िटरी और क्वेरी विधियाँ” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- JPA एनोटेशन से Entity मैपिंग
- Spring Data रिपॉज़िटरी और क्वेरी विधियाँ
- One-to-Many और Many-to-Many संबंध
- पृष्ठांकन, क्रमबद्धता और प्रोजेक्शन