tl;डॉ
नहीं, एक बहुत ही सरल कारण के लिए:कोई कोड जनरेशन नहीं चल रहा है। कार्यान्वयन परदे के पीछे और एक विधि इंटरसेप्टर पर आधारित है जो कॉल निष्पादन को सही स्थानों पर सौंपता है।
विवरण
प्रभावी रूप से, एक विधि निष्पादन को 3 प्रकार के कोड द्वारा समर्थित किया जा सकता है:
-
CrudRepository. का स्टोर विशिष्ट कार्यान्वयन .Simple(Jpa|Mongo|Neo4|…)Repositoryनाम के प्रकारों पर एक नज़र डालें (जेपीए विशिष्ट एक देखें यहां )CrudRepository. में सभी विधियों के लिए उनके पास "वास्तविक" कार्यान्वयन हैं औरPagingAndSortingRepository। -
क्वेरी विधियों को
QueryExecutorMethodInterceptor.doInvoke(…)द्वारा प्रभावी ढंग से क्रियान्वित किया जाता है (देखें यहां ) यह मूल रूप से प्रतिनिधिमंडल के लक्ष्य को खोजने और उसे लागू करने के लिए एक 3-चरणीय प्रक्रिया है। वास्तविक निष्पादन(Jpa|Mongo|Neo4j…)QueryExecutionनामक कक्षाओं में किया जाता है (उदाहरण के लिए इसे देखें)। -
कस्टम कार्यान्वयन कोड को सीधे
QueryExecutorMethodInterceptor. से भी कहा जाता है ।
केवल एक चीज बची है वह है क्वेरी व्युत्पत्ति, जिसमें दो प्रमुख भाग होते हैं:विधि नाम पार्सिंग और क्वेरी निर्माण। पहले वाले के लिए, PartTree पर एक नज़र डालें . यह एक विधि का नाम और आधार प्रकार लेता है और आपको एक पार्स की गई एएसटी-जैसी संरचना लौटाएगा या अगर यह गुणों या इसी तरह को हल करने में विफल रहता है तो अपवाद फेंक देगा।
बाद वाले को PartTree(Jpa|Mongo|Neo4j|…)Query नाम की कक्षाओं में लागू किया गया है और वास्तव में स्टोर विशिष्ट क्वेरी बनाने के लिए अतिरिक्त घटकों को सौंपता है। उदा. जेपीए के लिए दिलचस्प बिट्स शायद JpaQueryCreator.PredicateBuilder.build() में हैं (देखें यहां
)।