2011-11-17 23 views
16

के साथ वसंत परीक्षण मैं उत्पादन वातावरण में ओरेकल का उपयोग करता हूं और मैं परीक्षण के लिए एच 2 का उपयोग करना चाहता हूं। मैं टाइप कर सकता हूँ;एच 2 डीबी विन्यास

<jdbc:embedded-database id="dataSource"> 
    <jdbc:script location="classpath:schema.sql"/> 
    <jdbc:script location="classpath:test-data.sql"/> 
</jdbc:embedded-database> 

इसलिए मेरी टेबल और स्क्रिप्ट स्वचालित रूप से बनाई जाती हैं। लेकिन मैं इस डीबी के यूआरएल वैल्यू को सेट नहीं कर सकता। (एच 2-ओरेकल संगतता के लिए मुझे जोड़ना चाहिए; MODE = Oracle url भाग में)

क्या इस लक्ष्य को प्राप्त करने का कोई तरीका है?

या बस एक विपरीत समाधान;

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.h2.Driver"/> 
    <property name="url" value="jdbc:h2:file:h2\db"/> 
    <property name="username" value="sa"/> 
    <property name="password" value=""/>   
</bean> 
इस समय में

, मैं यूआरएल हिस्सा संपादित कर सकते हैं, लेकिन मैं कैसे इस डेटा स्रोत के लिए डिफ़ॉल्ट परीक्षण स्क्रिप्ट (बना सकते हैं और डेटा SQLs) लोड कर सकते हैं?

उत्तर

22

इस तकनीक ने समस्या हल की;

<bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="${jdbc.driverClassName}" /> 
     <property name="url" value="${jdbc.url}" /> 
     <property name="username" value="${jdbc.username}" /> 
     <property name="password" value="${jdbc.password}" /> 
</bean> 

और फिर यह टैग और परिभाषा जोड़ना;

<jdbc:initialize-database data-source="dataSource" ignore-failures="DROPS"> 
    <jdbc:script location="classpath:testdb/schema.sql" /> 
    <jdbc:script location="classpath:testdb/data.sql" /> 
</jdbc:initialize-database> 
+0

उन फ़ाइलों की सामग्री क्या है? schema.sql और data.sql, क्या उनमें कुछ ऐसा है जो आपको सेटअप करना है? – wlk

+0

हाय वोजटेक, हाँ, मुझे कुछ प्रारंभिक परीक्षण डेटा चाहिए। कई सामग्री कई सर्वरों के आईपी पते हैं, कुछ उपयोगकर्ता भूमिकाएं, शहर के नाम इत्यादि। – asyard

13

शायद इससे मदद मिलेगी: एच 2 INIT script (कनेक्शन खोलते समय निष्पादित एक SQL स्क्रिप्ट) का समर्थन करता है। डेटाबेस यूआरएल एक्सएमएल फ़ाइल में इस प्रकार दिखाई देगा:

<property name="url" value="jdbc:h2:file:h2\db;INIT= 
RUNSCRIPT FROM 'classpath:schema.sql'\; 
RUNSCRIPT FROM 'classpath:test-data.sql'"/> 

(; जरूरतों एक बैकस्लैश के साथ भाग जाना है)।

+0

आपकी प्रतिक्रिया के लिए धन्यवाद, मेरी सबसे अच्छी पसंद वसंत-प्रदत्त दृष्टिकोण (जेडीबीसी: प्रारंभिक-डेटाबेस .. आदि) का उपयोग मूल्यों के साथ यूआरएल विस्तार किए बिना कर रही थी। यह तकनीक भी सहायक है। धन्यवाद। – asyard