2015-07-19 6 views
10

या तो मैं कुछ कोर कुछ प्रलेखन (वसंत, वसंत बूट, H2, HSQLDB, डर्बी, IntelliJ) भीतर गहरे दफन अवधारणा याद कर रहा हूँ या मैं भी लंबे समय के लिए इस घूर कर दिया गया है ।स्प्रिंग बूट + इंटेलीजे + एंबेडेड डाटाबेस = सिरदर्द

मेरे पास एक स्प्रिंग बूट प्रोजेक्ट जा रहा है। पहले एच 2 डीबी का उपयोग करने और शुरू करने का प्रयास करने के बाद, इंटेलिजे में इसे जोड़ने का प्रयास करने के लिए केवल यह महसूस किया कि मैं अपने पहले बच्चे (Connect to H2 database using IntelliJ database client) को छोड़ दिए बिना आसानी से डीबी ब्राउज़ करने में सक्षम नहीं हूं।

तो मैं डर्बीडीबी में चले गए। वही बात - डीबी रूट फ़ोल्डर मेरे ऐप में बनाया गया है, मैं इसे इंटेलिजे में जोड़ता हूं लेकिन मेरी टेबल, जो कि ऐप शुरू करने से बनाई गई थीं ब्राउज़ करने के लिए उपलब्ध नहीं हैं।

मैं भी SQLite कोशिश की, लेकिन SQLite के लिए समर्थन के रूप में अच्छा नहीं है और कुछ अद्यतन कार्यों उपलब्ध नहीं थे, लेकिन मैं कम से कम इंटेलीजे ब्राउज़र में मेरी टेबल मिल सकता है!

मैं बस एक साधारण एकल फ़ाइल एम्बेडेड डीबी चाहता हूं जिसे मैं आसानी से उपयोग, ब्राउज़ और प्ले कर सकता हूं। कोई सुझाव?!

जब मैं आवेदन चलाने के लिए, मुझे लगता है कि स्कीमा निर्यात किया जाता है:

2015-07-19 09:37:45.836 INFO 98608 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000227: Running hbm2ddl schema export 
Hibernate: drop table user_roles if exists 
Hibernate: drop table users if exists 
Hibernate: create table user_roles (id bigint generated by default as identity, role_name varchar(255), version bigint, user_id bigint, primary key (id)) 
Hibernate: create table users (id bigint generated by default as identity, email varchar(255), password varchar(255), username varchar(255), version bigint, primary key (id)) 
Hibernate: alter table user_roles add constraint FK_g1uebn6mqk9qiaw45vnacmyo2 foreign key (user_id) references users 
2015-07-19 09:37:45.849 INFO 98608 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000230: Schema export complete 

इंटेलीजे में, कुछ भी नहीं (JDBC के दूरदराज के एक स्रोत का उपयोग: एच 2: ./ परीक्षण; heenenee सुझाव के अनुसार AUTO_SERVER = TRUE):

मैं का उपयोग कर अनुप्रयोगों का विकास कैसे करते हैं:

enter image description here

मैं कुछ वोट इसकी स्पष्ट नहीं है क्योंकि बंद करने के लिए मैं क्या पूछ रहा हूँ देखना एच 2, एचएसक्यूएलडीबी, या डर्बी डेटाबेस और इंटेलिजे के साथ उनसे जुड़ें?

+0

पथ के रूप में '।/Test' का उपयोग करके 2 डीबीएस बनेंगे: आपके वसंत बूट प्रोजेक्ट की कार्यशील निर्देशिका में से एक, और इंटेलिजे की कार्यशील निर्देशिका (या वहां) में से एक। दोनों स्थानों पर '~/test' का उपयोग करें ताकि दोनों यूआरएल फाइल सिस्टम पर एक ही स्थान पर इंगित करें। – heenenee

उत्तर

6

H2 Automatic Mixed Mode आपके लिए ठीक होना चाहिए। jdbc:h2:~/mydbInHomeDir;AUTO_SERVER=TRUE का उपयोग अपने spring.datasource.url के रूप में करें। IntelliJ में, रिमोट एच 2 डेटा स्रोत बनाएं और सटीक उसी जेडीबीसी यूआरएल का उपयोग करें। आप स्पष्ट रूप से डेटाबेस तालिकाओं दिखाने के लिए प्राप्त करने के लिए इंटेलीजे डेटाबेस विंडो में सिंक्रनाइज़ बटन दबाएँ करना पड़ सकता है।

+0

यह मेरे लिए काम किया। धन्यवाद। AUTO_SERVER मोड पर और विवरण [लिंक] http://www.h2database.com/html/features.html#auto_mixed_mode – Vladimir

2

आप इस लेख में चरणों का पालन करें: http://blog.techdev.de/querying-the-embedded-h2-database-of-a-spring-boot-application/

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

1

मुझे भी इसी तरह की समस्या थी। यह हाइबरनेट की डिफ़ॉल्ट create-drop डीडीएल रणनीति के कारण था। आवेदन बंद हाइबरनेट के बाद इस रणनीति के साथ सत्र के अंत में स्कीमा नष्ट कर देता है, यही कारण है कि इंटेलीजे कुछ भी नहीं दिखा है। create लिए DDL रणनीति बदलें और स्कीमा बना सकते हैं और अगले आवेदन स्टार्टअप पर पिछले डेटा को नष्ट कर देगा हाइबरनेट।

आवेदन:

यहाँ मेरी विन्यास का एक उदाहरण है।YML

spring: 
    datasource.url: jdbc:h2:./db/testDb 
    jpa.hibernate.ddl-auto: create 

इंटेलीजे डेटाबेस गुण

enter image description here

परिणाम

enter image description here

+0

पर पाया जा सकता है, इसके लिए धन्यवाद, शायद यह किसी की मदद करेगा। मैं अन्य ढांचे पर चले गए हैं। – Jack

0

क्या heenenee उपर्युक्त को जोड़ने के लिए। यदि आप AUTO_SERVER निर्दिष्ट नहीं करते हैं तो आपके H2 इंस्टेंस में केवल एक कनेक्शन की अनुमति होगी।

मैं वसंत-डेटा-जेपीए के साथ वसंत-बूट का उपयोग कर रहा हूं। सुनिश्चित करें कि आपने अपनी संस्थाओं के लिए @Entity घोषित किया है जो प्रत्येक तालिका का प्रतिनिधित्व करता है।

के बाद मेरी application.yml है/

spring.datasource.url: 
jdbc:h2:file:/Users/blah[![enter image description here][1]][1]/db/vlad4;AUTO_SERVER=TRUE 
spring.datasource.username: sa 
spring.datasource.password: 

spring: 
    jpa: 
    hibernate: 
     ddl-auto: create #will create schema based on entities 
    show-sql: true 
application.properties

आपके आवेदन शुरू करें और इसे में कुछ डेटा आयात करते हैं। आप इंटेलीजे तो enter image description here

की तरह आप इंटेलीजे का उपयोग नहीं कर रहे हैं, तो /src/main/resources/import.sql

कॉन्फ़िगर: स्प्रिंग बूट स्वचालित रूप से आपके डेटा में classpath पूर्व आयात करेगा आप import.sql अगर कनेक्शन स्ट्रिंग को निर्दिष्ट करके

h2/bin: java -cp h2*.jar org.h2.tools.Server 

कनेक्ट अपने सन्निहित डेटाबेस के लिए: सर्वर/ग्राहक कॉम्बो @ http://www.h2database.com/html/download.html डाउनलोड यह निकालने और का उपयोग कर ब्राउज़र आधारित ग्राहक शुरू 01,239,