در این بخش قدری به بررسی دیتابیس H2 به همراه Spring Boot میپردازیم
ابتدا وابستگی ها را اضافه میکنیم :
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>2.1.4.RELEASE</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> <version>1.4.199</version> </dependency>
تنظیمات H2 بوسیله Spring Boot :
به صورت پیش فرض Spring Boot دیتابیس H2 را در حالت In-Memory همراه با username بنام sa و بدون password تنظیم میکند
و اگر بخواهیم اطلاعات اتصال را تغییر دهیم در فایل application.properties آنها را وارد میکنیم :
spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
در حالت in-memory با restart شدن اپلیکیشن دیتا پاک شده و دوباره دیتابیس ایجاد میشود و برای اینکه در فایلی ذخیره کنیم و بعدا هم قابل بازیابی باشد پارامتر زیر را وارد میکنیم :
spring.datasource.url=jdbc:h2:file:/data/demo
عملیات در H2 مشابه دیگر دیتابیس های SQL base میباشد
ما میتوانیم در مسیر src/main/resources یک فایل با نام data.sql ایجاد کنیم و دستورات ساخت و ایجاد جداول و یا رکورد های اولیه را وارد کنیم Spring هر باری که اپلیکیشن را اجرا میکند این فایل را میخواند و دستورات آنرا اجرا میکند، این برای حالت تست خیلی کاربردی است
دسترسی به کنسول H2 :
بصورت پیش فرض نمایش کنسول در Spring فعال نیست و برای فعال شدن کافی است پارامتر زیر را در application.properties وارد کنیم :
spring.h2.console.enabled=true
بعد از این با اجرا شدن application در مرورگر آدرس http://localhost:8080/h2-console کنسول قابل مشاهده خواهد بود
علاوه بر پارامتر بالا میتوانیم پارامتر های دیگری را برای کنسول بکار ببریم :
spring.h2.console.path=/h2-console spring.h2.console.settings.trace=false spring.h2.console.settings.web-allow-others=false
با path آدرس url نمایش کنسول را ست کردیم
با false کردن spring.h2.console.settings.trace از trace output جلوگیری میکنیم
و با false کردن spring.h2.console.settings.web-allow-others مانع دسترسی remote میشویم