अपने स्प्रिंग बूट आवेदन करने के लिए Spring Boot Starter Data Cassandra निर्भरता को जोड़ने के लिए है, तो जैसा होगा करने के लिए सबसे आसान काम ...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
इसके अलावा, इस स्प्रिंग डाटा कैसेंड्राdependency में जोड़ देगा आपका आवेदन।
साथ स्प्रिंग डाटा कैसेंड्रा, आप अपने आवेदन के Keyspace (रों) का उपयोग कर कॉन्फ़िगर कर सकते हैं CassandraClusterFactoryBean
(या अधिक सटीक, उपवर्ग ... CassandraCqlClusterFactoryBean
) setKeyspaceCreations(:Set) विधि को फोन करके।
KeyspaceActionSpecification कक्षा सुंदर आत्म-व्याख्यात्मक है। आप KeyspaceActionSpecificationFactoryBean के साथ भी एक बना सकते हैं, इसे Set
पर जोड़ें और फिर CassandraClusterFactoryBean
पर setKeyspaceCreations(..)
विधि को पास करें।
आवेदन के टेबल्स पैदा करने के लिए, आप अनिवार्य रूप से सिर्फ अपने आवेदन डोमेन वस्तु (रों) (संस्थाओं) व्याख्या एसडी कैसेंड्रा @Table एनोटेशन का उपयोग कर, और सुनिश्चित करें कि आपके डोमेन वस्तुओं/संस्थाओं आवेदन के CLASSPATH पर पाया जा सकता बनाने की जरूरत है।
विशेष रूप से, आप अपना आवेदन @Configuration
कक्षा एसडी कैसंड्रा AbstractClusterConfiguration कक्षा का विस्तार कर सकते हैं। वहां, आपको getEntityBasePackages():String[] विधि मिल जाएगी जो आप अपने एप्लिकेशन डोमेन ऑब्जेक्ट/इकाई कक्षाओं वाले पैकेज स्थानों को प्रदान करने के लिए ओवरराइड कर सकते हैं, जिसे एसडी कैसंड्रा scan पर @Table
डोमेन ऑब्जेक्ट/इकाइयों के लिए उपयोग करेगा।
आपके आवेदन @Table
डोमेन वस्तु के साथ/संस्थाओं को ठीक से पहचान की है, आप एसडी कैसेंड्रा SchemaActionCREATE
करने के लिए CassandraSessionFactoryBean
विधि, setSchemaAction(:SchemaAction) का उपयोग कर निर्धारित किया है। यह स्कैन के दौरान पाए गए सभी डोमेन ऑब्जेक्ट/इकाइयों के लिए आपके कीस्पेस में टेबल्स बनाएगा, जो आपको identified उचित CassandraSessionFactoryBean
पर उपयुक्त कीस्पेस प्रदान करेगा।
जाहिर है, अगर आपके आवेदन बनाता है/एकाधिक Keyspaces का उपयोग करता है, तो आप, entityBasePackages
विन्यास संपत्ति संस्थाओं है कि एक विशेष Keyspace से संबंध रखते हैं के लिए उचित रूप से सेट के साथ, ताकि उससे संबद्ध टेबल्स हैं प्रत्येक Keyspace के लिए एक अलग CassandraSessionFactoryBean
बनाने की आवश्यकता होगी उस कुंजीस्पेस में बनाया गया।
अब ...
प्रति उपयोगकर्ता "अतिरिक्त" तालिका के लिए, कि काफ़ी अधिक जटिल और मुश्किल है।
आप यहां स्प्रिंग प्रोफाइल का लाभ उठाने में सक्षम हो सकते हैं, हालांकि, प्रोफाइल आमतौर पर स्टार्टअप पर ही लागू होते हैं। यदि कोई अलग उपयोगकर्ता पहले से चल रहे एप्लिकेशन में लॉग इन करता है, तो आपको रनटाइम पर ApplicationContext
पर अतिरिक्त @Configuration
कक्षाएं प्रदान करने का एक तरीका चाहिए।
आपका स्प्रिंग बूट आवेदन एक AnnotationConfigApplicationContext
के लिए एक संदर्भ इंजेक्षन सकता है, और फिर लॉगिन ईवेंट पर इसका इस्तेमाल करने वाले उपयोगकर्ता आवेदन में लॉग इन के आधार पर प्रोग्राम के रूप में register अतिरिक्त @Configuration
वर्गों के लिए। ApplicationContext.refresh()
के साथ आपको अपने register(Class...)
कॉल (ओं) का पालन करना होगा।
आपको उस स्थिति को उचित रूप से संभालने की आवश्यकता है जहां टेबल्स पहले से मौजूद हैं।
यह वर्तमान में एसडी कैसंद्रा में समर्थित नहीं है, लेकिन अधिक जानकारी के लिए DATACASS-219 देखें।
तकनीकी रूप से, रनटाइम पर सभी उपयोगकर्ताओं के लिए आवेदन द्वारा आवश्यक सभी संभावित टेबल्स बनाने और कैसंड्रा की सुरक्षा सेटिंग्स का उपयोग करने के लिए भूमिका और असाइन अनुमतियों द्वारा व्यक्तिगत उपयोगकर्ता पहुंच को प्रतिबंधित करने के लिए बहुत आसान होगा।
कोई अन्य विकल्प केवल अस्थायी कीस्पेस और/या टेबल्स बनाने के लिए हो सकता है जब उपयोगकर्ता एप्लिकेशन में लॉग इन करता है, उपयोगकर्ता को लॉग आउट करते समय उन्हें छोड़ दें।
स्पष्ट रूप से, यहां कई सारे विकल्प हैं, और यह वास्तुशिल्प निर्णयों, व्यापारिकताओं और विचारों के लिए और अधिक उबलता है, फिर यह तकनीकी व्यवहार्यता करता है, इसलिए सावधान रहें।
उम्मीद है कि इससे मदद मिलती है।
चीयर्स!
मैं इस कोड का पालन किया है, लेकिन अभी भी मैं करने में असमर्थ हूँ एक keyspace पैदा करेगा एप्लिकेशन के बूट पर कीस्पेस और टेबल बनाएं। क्या कोई और चीज है जो मुझे याद आ रही है? कृपया मेरा मार्ग दर्शन कीजिए। – Milesh