বসন্ত বুট ডিফল্ট H2 jdbc সংযোগ (এবং এইচ 2 কনসোল)


107

আমি কেবল এম্বেড হওয়া এইচ 2 ডাটাবেসের জন্য এইচ 2 ডাটাবেস সামগ্রীটি দেখার চেষ্টা করছি যা আমি আমার অ্যাপ্লিকেশন.প্রপার্টিগুলিতে কোনও নির্দিষ্ট না করে এবং এমভিএন স্প্রিংয়ের সাথে শুরু করে: রান করুন spring আমি দেখতে পাচ্ছি হাইবারনেট জেপিএ টেবিলগুলি তৈরি করছে তবে আমি যদি ডাটাবেসের নীচে ইউআরএলে এইচ 2 কনসোলটি অ্যাক্সেস করার চেষ্টা করি তবে কোনও টেবিল নেই।

http://localhost:8080/console/

আমি এর মতো পরামর্শ দেখতে পাচ্ছি: এম্বেডড এইচ 2 ডাটাবেসের সামগ্রী স্প্রিংয়ের মাধ্যমে শুরু করুন

তবে আমি জানি না যে স্প্রিং-বুটে প্রস্তাবিত এক্সএমএলটি কোথায় রাখা উচিত এবং এমনকি আমি করে থাকলেও, আমি চাই না যে কোনও বহিরাগত ডাটাবেস কনফিগার করা থাকলে এইচ 2 কনসোলটি আর পাওয়া না যায়, তবে সম্ভবত এটি হ্যান্ডেল করার দরকার আছে কিছু শর্তসাপেক্ষ কোড সহ (বা সম্ভবত কেবলমাত্র বসন্তটি সবচেয়ে আদর্শ ক্ষেত্রে এটি স্বয়ংক্রিয়ভাবে পরিচালনা করার অনুমতি দেয় যেখানে কোনও মাভেন প্রোফাইল সক্রিয় হওয়ার সময় আমি কেবল এইচ 2 অন্তর্ভুক্ত করি)।

বুটের মধ্যে এইচ 2 কনসোল কীভাবে কাজ করবেন (এবং বসন্তটি যে জেডিবিসি সংযোগের স্ট্রিংটি ব্যবহার করছে তা কী কী তা খুঁজে বের করার উপায় রয়েছে) তা দেখানোর জন্য কি কারও কাছে কিছু নমুনা কোড রয়েছে?


আমি আংশিকভাবে আমার নিজের এপ্লিকেশনটিতে এটিকে যুক্ত করে নিজের প্রশ্নের উত্তর দিতে পারি spring .datasource.username = sa वसंत.ড্যাটাসোসর.পাসওয়ার্ড = তবে আমি যা জানতে চাই তা হল প্রোগ্রামিয়ালি কনফিগারেশনটি কীভাবে পরিচালনা করা যায় (বা কমপক্ষে কীভাবে বসন্তের ডিফল্টগুলি সন্ধান করা যায়)
অ্যারন জেকোস্কি


1
জিওয়ান্ড - এটি একই জিনিসটিকে আমি আসল প্রশ্নে যুক্ত করেছি যাতে আমি ভয় করি যে এটি সহায়ক নয়।
অ্যারন জেকোস্কি

2
ডেভ - এই কনফিগারেশনটি যুক্ত করে আমি এইচ 2 কনসোলটি অ্যাক্সেস করতে এবং টেবিলগুলি দেখতে সক্ষম হয়েছি তবে এটি করার সঠিক উপায় কিনা তা আমাকে বুঝতে সহায়তা করে না (যখন আমার কাছে নেই তখন আমি বসন্তের মধ্যে একটি সেটআপ অ্যাক্সেস করতে পছন্দ করব) সেটিংস) বা জেডিবিসি সংযোগ বসন্ত কীভাবে পাবেন তা ব্যবহার করছে।
অ্যারন জেকোস্কি

1
জেডিবিসি ইউআরএল ব্যবহার করুন: জেডিবিসি: এইচ 2: মেম: টেস্টডিবি
চিন্ময়

উত্তর:


110

এইভাবে আমি H2 এর সাথে বসন্ত-বুটে কাজ করে এইচ 2 কনসোলটি পেয়েছি। এটি ঠিক আছে কিনা তা সম্পর্কে আমি নিশ্চিত নই তবে যেহেতু অন্য কেউ সমাধানের প্রস্তাব দেয়নি তাই আমি এটি করার সবচেয়ে ভাল উপায় এটিই সুপারিশ করতে যাচ্ছি।

আমার ক্ষেত্রে, আমি ডাটাবেসটির জন্য একটি সুনির্দিষ্ট নামটি বেছে নিয়েছি যাতে H2 কনসোলটি শুরু করার সময় আমার কিছু প্রবেশ করতে পারে (এই ক্ষেত্রে, "এজেড")। আমার মনে হয় এইগুলি সমস্ত প্রয়োজনীয় প্রয়োজন যদিও এটি মনে হয় যেন বসন্ত ছেড়ে চলে যায় j

অ্যাপ্লিকেশন.প্রাপ্তিতে:

spring.datasource.url=jdbc:h2:mem:AZ;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

অ্যাপ্লিকেশন.জভাতে (বা কিছু কনফিগারেশন):

@Bean
public ServletRegistrationBean h2servletRegistration() {
    ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet());
    registration.addUrlMappings("/console/*");
    return registration;
}

তারপরে আপনি 2 সার্ভার} / কনসোল / এ H2 কনসোল অ্যাক্সেস করতে পারেন। এটিকে জেডিবিসি ইউআরএল হিসাবে প্রবেশ করুন: জেডিবিসি: এইচ 2: মেম: এজেড


1
new WebServlet()আমাকে সমস্যা দিন ব্যবহার করে । এটি আপনার জন্য কোন শ্রেণিটি আমদানি করছে? এটি javax.servlet.annotation.WebServlet এ আমার কাছে একমাত্র বিকল্প হিসাবে টানছে এবং এটি কেবল একটি ইন্টারফেস।
স্প্লাক্টর

5
ওহ আমি এটি পেয়েছি, org.h2.server.web.WebServlet এর দরকার। আমার প্রকল্পটি নতুন এইচ 2 লাইব্রেরিগুলিতে টানতে গ্র্যাডলের সাথে সুসংগত ছিল না।
স্প্লাক্টর

21
অ্যাপ্লিকেশন.প্রপার্টি টুকরা প্রয়োজন হয় না। আপনি যে অ্যাপ্লিকেশন.জভা অংশ রেখেছেন তা কেবলমাত্র ব্যবহার করতে পারেন, তার পরে jdbc:h2:mem:testdbএকটি ফাঁকা ব্যবহারকারীর নাম এবং ফাঁকা পাসওয়ার্ডের সাথে সংযুক্ত হন । লোকালহোস্ট: 8082 এই সেটআপটির সাথে কাজ করে।
স্প্লাক্টার

2
@ স্প্ল্যাক্টর আপনাকে ধন্যবাদ! আমি কীভাবে সংযোগ স্থাপন করব তা বোঝার চেষ্টা করে বাদাম যাচ্ছিলাম এবং ধাঁধাটির অনুপস্থিত অংশটি ছিল ডাটাবেসের নামের জন্য "টেস্টডিবি" ব্যবহার করা।
nerdherd

1
@ স্প্লাক্টার - আপনার মন্তব্যটি উত্তর করা উচিত। ভালো লেগেছে আপনার জন্য সোর্স কোড বলেন EmbeddedDatabaseConnection শো সব ডিফল্ট এমবেডেড ডিবি সংযোগ URI উল্লিখিত
কার্তিক মি

55

স্প্রিং বুট হিসাবে, 1.3.0.M3এইচ 2 কনসোলটি স্বয়ংক্রিয়ভাবে কনফিগার করা যেতে পারে।

পূর্বশর্তগুলি হ'ল:

  • আপনি একটি ওয়েব অ্যাপ্লিকেশন বিকাশ করছেন
  • স্প্রিং বুট ডেভ সরঞ্জামগুলি সক্ষম করা আছে
  • এইচ 2 ক্লাসপথে রয়েছে

এমনকি যদি আপনি স্প্রিং বুট ডেভ সরঞ্জামগুলি ব্যবহার না করেন তবে আপনি সেট করে কনসোলটিকে স্বতঃ-কনফিগার করতে পারেন spring.h2.console.enabled পারেনtrue

পরীক্ষা করে দেখুন এই সব বিস্তারিত জানার জন্য ডকুমেন্টেশন অংশ।

মনে রাখবেন যে এই উপায়ে কনফিগার করার সময় কনসোলটি এখানে প্রবেশযোগ্য: http: // লোকালহস্ত: 8080 / এইচ 2-কনসোল /


বা দস্তাবেজে বর্ণিত হিসাবে আপনি এটিকে বসন্তের সাথে সক্ষম করুন .h পূর্বশর্তগুলির সাথে এটি স্বয়ংক্রিয়ভাবে সক্ষম হয়।
keiki

কী আপনি একটি ওয়েব অ্যাপ্লিকেশন উন্নয়নশীল হয় ঠিক বোঝাতে চেয়েছিলেন?
গারসি 560

স্প্রিং বুটের প্রসঙ্গে, এর অর্থ হ'ল আপনি spring-boot-starter-webনির্ভরতা হিসাবে যুক্ত করেছেন
জিওএন্ড

1
এছাড়াও আমি মনে করি আপনি যখন লোকালহোস্ট খুলবেন : 8080 / এইচ 2-কনসোল আপনার টেবিলগুলি দেখতে jdbc: h2: mem: jdbc url এ টেস্টডিবি লিখতে হবে। এবং url লোকালহোস্টে: লোকালহোস্টের পরে 8080 / h2-কনসোল আপনাকে অ্যাপ্লিকেশনটির পোর্ট নির্দিষ্ট করতে হবে।
অনুজপ্রশর

3
@ অনুজপ্রশার আমি নিশ্চিত jdbc:h2:mem:testdbযে সংযোগ ইউআরএলটির জন্য আমি নিশ্চিত , ইউআরএলটির জন্য কনসোলটি অ্যাক্সেসযোগ্য ছিল না
জিওআ্যান্ড এবং

44

আমি এই বিষয় সম্পর্কে একটি সুন্দর টিউটোরিয়াল পেয়েছি:

https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/

মূলত আমার জন্য সঠিক জেডিবিসি ইউআরএলটি ছিল: jdbc:h2:mem:testdb


1
বোবা প্রশ্ন তবে এটি ডিফল্ট জেডিবিসি ইউআরএল বলে মনে হচ্ছে কারণ সেটিং স্প্রিং.ড্যাটাসোসর.নাম টেস্টডিবির ডিফল্ট। কেন আমি যদি ডিবি নামটিকে ফুডবি জাতীয় কিছুতে পরিবর্তন করি তবে জেডিবিসি এখনও একই রকম এবং জেডিবিসি: এইচ 2: মেম: ফুডবি
ড্যান ভেগা

2
এই জেডিবিসি ইউআরএল জেডিবিসি: এইচ 2: মেম: টেস্টডিবি সঠিক। এটি আমাকে শেষ পর্যন্ত স্প্রিং ডেটা জেপি দ্বারা নির্মিত ডিফল্ট ডাটাবেসে সংযোগ করতে সহায়তা করেছিল।
কামাল যোশি

আপনি ডিবি নামটিকে যেকোন কিছু হিসাবে সেট করতে পারেন: বসন্ত.ড্যাটাসোস.আরএল = জেডিবিসি: এইচ 2: মেম: পরীক্ষা; in application.properties
আলেক্সেই মেইড

23

থেকে http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

এইচ 2 ওয়েব কনসোল (এইচ 2 কনসোলপ্রাপ্তি):

spring.h2.console.enabled=true //Enable the console.
spring.h2.console.path=/h2-console //Path at which the console will be available.

আমার অ্যাপ্লিকেশনটিতে উপরোক্ত দুটি লাইন যুক্ত করা হয়েছে rop প্রপার্টি ফাইলগুলিতে এইচ 2 ডাটাবেস ওয়েব কনসোল অ্যাক্সেস করার জন্য যথেষ্ট ছিল, ডিফল্ট ব্যবহারকারীর নাম (সা) এবং পাসওয়ার্ড (খালি যেমন ইউআই আপনাকে অনুরোধ করবে তখন কোনও পাসওয়ার্ড প্রবেশ করবেন না)।


1
হওয়া উচিত নয় spring.h2.console.enabled=true? মিথ্যা এটি অক্ষম করবে। এবং spring.h2.console.path=/h2-consoleঅনর্থক কারণ /h2-consoleস্প্রিং বুট থেকে ডিফল্ট পাথ। ডকুমেন্টেশন অনুসারে "ডিফল্টরূপে কনসোলটি / h2-কনসোলে উপলব্ধ হবে You আপনি বসন্তের। Hd.console.path সম্পত্তি ব্যবহার করে কনসোলের পথটি কাস্টমাইজ করতে পারেন" " আরো বিস্তারিত এখানে docs.spring.io/spring-boot/docs/current/reference/html/...
georger

ওপি দেখানোর জন্য আমি পরের সম্পত্তিটি অন্তর্ভুক্ত করেছি যেখানে সে কনসোলটি অ্যাক্সেস করতে পারে। স্পষ্টতই বসন্তে। H2.console.en اهل.en اهل = মিথ্যা কনসোলটি নিষ্ক্রিয় করবে, মূল বিষয় হল এটি সম্পত্তি হিসাবে কনফিগারযোগ্য urable আমি স্পষ্টতার জন্য এই সম্পত্তিটিকে সত্যে সেট করব।
mancini0

20

স্টেপ বাই স্টেপ গাইডের সাথে অনুরূপ উত্তর।

  1. আপনার বা বিকাশকারী সরঞ্জাম নির্ভরতা যুক্ত করুনpom.xmlbuild.gradle

ম্যাভেন

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

Gradle

dependencies {
    compile("org.springframework.boot:spring-boot-devtools")
}
  1. থেকে ডিবি অ্যাক্সেস করুন http://localhost:8080/h2-console/
  2. jdbc:h2:mem:testdbজেডিবিসি ইউআরএল হিসাবে উল্লেখ করুন
  3. আপনার প্রকল্পে সুনির্দিষ্ট যে সত্ত্বাটি আপনি আপনার প্রকল্পে নির্দিষ্ট করেছেন তা টেবিল হিসাবে দেখা উচিত।

2
নির্ভরতা বিভাগে এটি যুক্ত করা আমার জন্য কাজ করেছিল 'রানটাইম ("com.h2 ডেটাবেস: এইচ 2")'
রাজা নগেন্দ্র কুমার

17

আমার /res উত্স / অ্যাপ্লিকেশন.প্রোপার্টিগুলিতে কেবল নীচে বৈশিষ্ট্য ছিল। স্প্রিং বুট চালানোর পরে, এই ইউআরএল ( HTTP: // লোকালহস্ট: 8080 / এইচ 2-কনসোল / ) ব্যবহার করে, এইচ 2 কনসোলের টেবিলটি দৃশ্যমান ছিল এবং টেবিলের ডেটা দেখতে পঠিত ছিল, এছাড়াও আপনি সাধারণ এসকিউএল কমান্ড চালাতে পারেন। আপনার জাভা কোডে একটি জিনিস, ডেটা আনার সময় কলামের নামগুলি বড় হাতের অক্ষর, যদিও স্কিমা.এসকিউএল ছোট-ছোট নাম ব্যবহার করে :)

spring.datasource.initialize=true
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=- 1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true

16

জন্য স্প্রিং বুট 2.1.1 স্প্রিং Initialzr থেকে সরাসরি:

  1. ডিভটোলগুলির সাথে ডিফল্ট হ'ল http://127.0.0.1:8080/h2-console/

    • পম: স্প্রিং-বুট-স্টার্টার, এইচ 2, স্প্রিং-বুট-স্টার্টার-ওয়েব, স্প্রিং-বুট-ডেভোলগুলি
  2. দেবতুলগুলি ব্যতীত - আপনাকে এগুলিকে বৈশিষ্ট্যে সেট করতে হবে:spring.h2.console.enabled=true spring.h2.console.path=/h2-console

    • পম: স্প্রিং-বুট-স্টার্টার, এইচ 2, স্প্রিং-বুট-স্টার্টার-ওয়েব

আপনি সেখানে পৌঁছে গেলে - জেডিবিসি ইউআরএল সেট করুন: জেডিবিসি: এইচ 2: মেম: টেস্টডিবি (ডিফল্ট কোনওটি কাজ করবে না)


10

আপনি যদি স্প্রিং বুটের বিকাশকারী সরঞ্জাম ব্যবহার করেন তবে এটি H2 কনসোলটি ডিফল্টরূপে সক্ষম হয়ে আসে। এটি /h2-console/ থেকে প্রবেশ করা যেতে পারে । ইনপুট JDBC URLব্যবহারের মানের জন্য লগইন ইন্টারফেসে jdbc:h2:mem:testdbmemস্ট্রিং মনোযোগ দিন ।

আপনি Spring বুট এর ডেভেলপার টুলস ব্যবহার করবেন না, তাহলে আপনি কনসোল সক্ষম করতে পারেন application.propertiesব্যবহার spring.h2.console.enabled=true। এটি এর অধীনে কনসোলকে সক্ষম করবে /h2-console। আপনি যদি ইউআরএল পরিবর্তন করতে চান তবে আপনি এর সাথে অন্য একটি এন্ট্রি যুক্ত করতে পারেন spring.h2.console.path=my_console_path

ডিফল্ট স্কিমা নাম testdb

স্প্রিং বুট ডকুমেন্টেশন আরও বিশদ ।


4
কেন jdbc:h2:mem:testdbডিফল্ট jdbc url হিসাবে সেট করা হয়নি ? আমার জেপিএ সত্ত্বাগুলি ভুল হয়ে গেছে এমন চিন্তাভাবনায় আমি অনেক সময় ব্যয় করেছি
সুদীপ ভান্ডারী

10

বসন্ত অ্যাপ্লিকেশন.সম্পাদনা পরীক্ষা করুন

spring.datasource.url = JDBC: H2 করুন: mem: testdb; DB_CLOSE_DELAY = -1; DB_CLOSE_ON_EXIT = মিথ্যা

এখানে টেস্টডিবি ডাটাবেস সংজ্ঞায়িত করা হয়েছে তা নিশ্চিত করুন যে অন্যান্য বুদ্ধিমানের সাথে সংযোগ করার সময় এইচ 2 কনসোলের একই মান রয়েছে এটি ডিফল্ট ডিবিতে সংযুক্ত হবে

এখানে চিত্র বর্ণনা লিখুন


1
ত্রুটিহীন উত্তর!
গৌরব

6

টেবিলগুলি পাওয়ার জন্য আপনাকে যা করতে হবে তা হ'ল 2 স্কয়ার ফাইলগুলি স্কিমা.এসকিএল (টেবিল তৈরির জন্য) এবং ডেটা.এসকিউএল (তৈরি করা টেবিলগুলির জন্য ডেটা) তৈরি করতে হবে। এই ফাইলগুলি এসসিআর / প্রধান / সংস্থান ফোল্ডারে রাখতে হবে। স্প্রিং বুট অটো তাদের সনাক্ত করে এবং রানটাইমের সময় বিশ্রামের যত্ন নেয়।

যদি আপনি আপনার প্রকল্পে 2 ডিবি-র বেশি ব্যবহার করেন তবে সুনির্দিষ্ট ফাইলগুলি যেমন (স্কিমা-এইচ 2.এসকিউএল - এইচ 2 ডিবির জন্য, স্কিমা-ওরাকল.এসকিএল - ওরাকল ডিবির জন্য) ব্যবহার করা নিশ্চিত করে ensure একই ডেটা। এসকিউএল জন্য অনুসরণ করা।

এছাড়াও আপনার স্কিমা.এসকিউএল-তে প্রথম বিবৃতি হিসাবে ড্রপ টেবিলের স্টেটমেন্ট যুক্ত করে টেবিলগুলি ফেলে দেওয়ার বিষয়টি নিশ্চিত করুন। সদৃশ রেকর্ড সংযোজন এড়াতে।

বসন্ত বুটের লিঙ্কটি এখানে।

আমার অ্যাপ্লিকেশন। প্রপার্টিগুলি নিম্নরূপ।

spring.datasource.url=jdbc:h2:~/file/Shiva;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.platform=h2
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
spring.datasource.initialize=true 
spring.error.whitelabel.enabled=true
spring.h2.console.path=/console
spring.datasource.continue-on-error=true
spring.jpa.hibernate.ddl-auto=create
spring.hibernate.hbm2ddl.auto=update
spring.hibernate.show_sql=true

আপনি নীচের লিঙ্কে পদক্ষেপগুলি অনুসরণ করতে পারেন।

https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/


"বসন্ত.jpa.hibernate.ddl- অটো" বিভিন্ন মান সহ দুইবার ...
ইউরা

3

আমি খুঁজে পেয়েছি যে স্প্রিং বুট ২.০.২.আরলেএএসই সহ, পোম ফাইলে স্প্রিং-বুট-স্টার্টার-ডেটা-জেপিএ এবং com.h2 ডেটাবেস কনফিগার করা এইচ 2 কনসোলের কাজ করার জন্য যথেষ্ট নয়। নীচের মতো আপনাকে অবশ্যই বসন্ত-বুট-ডেভলগুলি কনফিগার করতে হবে। Ptionচ্ছিকভাবে আপনি এই পোস্টে অ্যারোন জেকোস্কির নির্দেশ অনুসরণ করতে পারেন follow

  <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
 </dependency>

3

H2 কনসোলে লগ ইন করার সময় jdbc: h2: mem: testdb ব্যবহার করুন path

স্পষ্টতই যদি আপনি স্প্রিং বুটের বৈশিষ্ট্যগুলি পরিবর্তন করে থাকেন তবে আপনার ডেটা উত্স ভিন্ন হতে পারে, তবে মনে হচ্ছে আপনি কীভাবে ডিফল্টটি সন্ধান করবেন সে নিয়ে লড়াই করছেন। এখানেই শেষ এটা পেতে ওখানে যাও! H2 এ লগ ইন করার পরে আপনি আপনার স্কিমাটি দেখতে পাবেন।


1

আমার যখন একই সমস্যা হয়েছিল তখন আমি খুব বোকা ভুল করেছিলাম। আমি ইউনিট পরীক্ষার বিষয় দৌড়ানো অত: পর আমি সেট গিয়েছিল ও H2 ডিবি যোগ করেছিলেন scopeকরার testমধ্যে pom.xml। অ্যাপ্লিকেশনটি চালানোর সময় mvn spring:runআমি scopeএটিকে সরিয়েছি এবং এটি এখন ভাল কাজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.