2016-09-01 10 views
7

में एकाधिक डेटा स्रोत स्रोत मेरा आवेदन स्प्रिंग डेटा जेपीए का उपयोग करके स्प्रिंग बूट जेपीए का उपयोग कर स्प्रिंग बूट, हाइबरनेट, माईएसक्यूएल पर आधारित है।वसंत बूट रिपोजिटरी एनोटेटेड इंटरफेस

भारी पढ़ने के संचालन के लिए दास डीबी नोड का उपयोग करने के लिए केस का उपयोग करना है ताकि मास्टर माइस्क्ल नोड से सभी ट्रैफिक से बचा जा सके। इसे प्राप्त करने का एक तरीका यह है कि एकाधिक इकाई प्रबंधक अलग-अलग डेटा स्रोतों को इंगित करते हैं (एक मास्टर और अन्य गुलाम नोड के लिए)। इस तरह से नीचे प्रश्नों और ब्लॉगों में काफी अच्छी तरह से समझाया गया है।

Spring Boot, Spring Data JPA with multiple DataSources

https://scattercode.co.uk/2016/01/05/multiple-databases-with-spring-boot-and-spring-data-jpa/

मैं कहां अटक कर रहा हूँ अगर वहाँ एक तरह से मैं अपने भंडार एनोटेट इंटरफ़ेस में विभिन्न उपयोग मामलों के लिए अलग इकाई प्रबंधकों इंजेक्षन कर सकते हैं समझने के लिए है।

एकमात्र तरीका जिसे मैं इसे देख सकता हूं, एक कस्टम कार्यान्वयन के साथ भंडार का विस्तार कर रहा है जो प्रासंगिक दृढ़ता के साथ एनोटेटेड कस्टम इकाई प्रबंधक का उपयोग करता है जैसे नीचे की तरह।

public interface CustomerRepository extends JpaRepository<Customer, Integer>, MyCustomCustomerRepository{ 
} 

public class MyCustomCustomerRepositoryImpl implements MyCustomCustomerRepository { 

     @PersistenceContext(unitName = "entityManagerFactoryTwo") 
     EntityManager entityManager; 
} 

मैं इस कस्टम कार्यान्वयन से बचना चाहता हूं। इस उपयोग के मामले को हल करने के आसपास कोई भी मदद (जो मुझे लगता है कि बहुत आम होना चाहिए) की सराहना की जाएगी।

नोट: दोनों डेटाबेस में इकाइयां समान हैं इसलिए इकाई स्कैनिंग और इसी तरह के समाधान के लिए अलग-अलग पैकेज देने से काम नहीं हो सकता है।

+0

करता है [इस नमूने] (https://github.com/snicoll-demos/demo-multi-entity-managers/) में मदद करता है? –

+1

आपके द्वारा साझा किए गए डेमो में विभिन्न डीबीएस में दो अलग-अलग इकाइयां हैं। इस तरह के मामले के लिए दो इकाई प्रबंधकों का उपयोग करते समय विवादों से बचना आसान हो जाता है। मेरे लिए संस्थाएं वही रहती हैं चाहे हम उन्हें मास्टर या गुलाम डीबी के लिए उपयोग करें। –

उत्तर

3

यहां एक अच्छा नमूना है जिसका आप उपयोग कर सकते हैं: dynamic-datasource-routing-with-spring। अंदर आप एक AbstractRoutingDatasource + एक कस्टम एनोटेशन के लिए एक इंटरसेप्टर पा सकते हैं जो एक आवश्यक डेटाबेस के लिए सेवा विधि तार करता है। हालांकि आप डेटासेट स्विच को स्पष्ट रूप से उपयोग कर सकते हैं।

+0

हालांकि नमूना एक्सएमएल कॉन्फ़िगरेशन का उपयोग करके पर्याप्त कर रहा है और मेरी परियोजना अधिकांशतः एनोटेशन संचालित होती है, प्रदान किया गया उत्तर मुझे कार्यक्षमता को प्राप्त करने के तरीके पर अच्छा संदर्भ देता है। धन्यवाद :) –

2

नीचे पुल अनुरोध है जो diff दिखाता है और मैंने इसे XML के बजाय संचालित अधिकांश कॉन्फ़िगरेशन एनोटेशन के साथ कैसे काम किया है। यह उपरोक्त cra6 के उत्तर पर आधारित है। यानी वसंत की रूटिंगडेटा स्रोत क्षमता का उपयोग कर।

https://github.com/himanshuvirmani/rest-webservice-sample/pull/1/files