आप Spring Data JPA पर एक नज़र डाल सकते हैं। यह आपको निष्पादन को मैन्युअल रूप से कार्यान्वित करने की आवश्यकता के बिना इंटरफ़ेस को परिभाषित करने और क्वेरी निष्पादित करने की अनुमति देता है।
निकाय:
@Entity
@NamedQuery(id="User.findByLastname" query="from User u where u.lastname = ?1")
public class User implements Persistable<Long> {
@Id
private Long id;
private String username;
private String lastname;
private int age;
}
भंडार:
public interface UserRepository extends CrudRepository<User, Long> {
// Will trigger the NamedQuery due to a naming convention
List<User> findByLastname(String lastname);
// Will create a query from the methodname
// from User u where u.username = ?
User findByUsername(String username);
// Uses query annotated to the finder method in case you
// don't want to pollute entity with query info
@Query("from User u where u.age > ?1")
List<User> findByAgeGreaterThan(int age);
}
सेटअप:
EntityManager em = Persistence.getEntityManagerFactory().createEntityManager();
JpaRepositoryFactory factory = new JpaRepositoryFactory(em);
UserRepository repository = factory.getRepository(UserRepository.class);
जैसा कि आप देख आप क्वेरी प्राप्त करने के लिए अलग अलग तरीकों से विधि से निष्पादित करने के लिए बीच चयन कर सकते ।इसे विधि नाम से सीधे प्राप्त करने के दौरान सरल प्रश्नों के लिए व्यवहार्य है जो आप शायद @NamedQuery
(जेपीए मानक) या @Query
(स्प्रिंग डेटा जेपीए एनोटेशन) के बीच चुनते हैं, इस पर निर्भर करते हुए कि आप मानकों के साथ कितना चिपकना पसंद करते हैं।
वसंत डेटा जेपीए आपको डेटा एक्सेस लेयर कार्यान्वयन के विभिन्न अन्य कोनों में समर्थन देता है, जो तरीकों के लिए कस्टम कार्यान्वयन प्रदान करता है और अच्छी तरह से वसंत के साथ एकीकृत करता है।
स्रोत
2009-05-21 12:41:14
केंद्रीय स्थान मॉडल ऑब्जेक्ट को डीएओ बनाम क्यों उपयोग करना चाहिए जो वास्तव में इसका उपयोग कर रहा है? – Ruggs
मैं यह उल्लेख करना भूल गया कि इन नामित प्रश्नों को मैं आम तौर पर इकाई पर डालता हूं। यदि क्वेरी कई संस्थाओं को पार करती है तो आप केवल सबसे प्रासंगिक चुनते हैं। – cletus