Spring Boot ma'lumotlarni yig'ish, uzatish va ishlov berish texnologiyalari bilan, SQL va NoSQL bilan integratsiyalashadi.
SQL ma'lumotlar bazalari
Spring Framework SQL ma'lumotlar bazalari bilan ishlash uchun tashkiliy asboblarni taqdim etadi, JdbcTemplate orqali JDBC'ga to'g'ridan-to'g'ri kirishdan tortib, "ob'ektli-relyatsion xaritani chiqarish" texnologiyalarigacha, Hibernate kabi to'liq texnologiyalarning ishlatilishiga qadar. Spring Data qo'shimcha darajali funksionallikni taqdim etadi: Repository amalga oshirishlarini bevosita interfeyslardan yaratish va metod nomlaridan so'rovlarni generatsiyalash bo'yicha konventsiyalardan foydalanish.
DataSource ni sozlash
Java interfeysi javax.sql.DataSource ma'lumotlar bazasiga ulanishlar bilan ishlashning standart usulini taqdim etadi. An'anaviy ravishda "DataSource" ma'lumotlar bazasiga ulanish o'rnatish uchun ba'zi hisob ma'lumotlari bilan birga URL manzilni ishlatadi.
O'rnatilgan ma'lumotlar bazalarini qo'llab-quvvatlash
Dasturlarni rivojlantirishda ko'pincha ichki qo'nimlil ma'lumotlar bazasidan foydalanish qulayroq bo'ladi. Albatta, qo'nimlil ma'lumotlar bazalari doimiy xotirani taqdim etmaydi. Dastur ishga tushirilganda ma'lumotlar bazasini to'ldirish va dastur to'xtatilganda ma'lumotlarni o'chirishga tayyor bo'lish kerak.
Spring Boot avtomatik ravishda H2, HSQL va Derby ni konfiguratsiyalash mumkin. Har qanday ulanish URL manzillarini ko'rsatish kerak emas. Faqatgina foydalanmoqchi bo'lganingiz o'rnatilgan ma'lumotlar bazasiga bog'liq bo'lgan yig'ish qaramligini qo'shishingiz kerak. Agar sinf yo'lida bir nechta o'rnatilgan ma'lumotlar bazalar mavjud bo'lsa, qaysi birini ishlatishni boshqarish uchun spring.datasource.embedded-database-connection konfiguratsiya xususiyatini o'rnating. Xususiyatni none qiymatiga o'rnatish o'rnatilgan ma'lumotlar bazasining avtomatik konfiguratsiyasini o'chiradi.
Agar bu funktsiyani testlaringizda ishlatayotgan bo'lsangiz, bir xil ma'lumotlar bazasi test majmuangizning barcha qismlari bilan qayta ishlatilayotganini sezishingiz mumkin, foydalanayotgan ilova kontekstlari sonidan qat'i nazar. Har bir kontekst uchun alohida o'rnatilgan ma'lumotlar bazasini ta'minlash muhim bo'lsa, spring.datasource.generate-unique-name ni true ga o'rnating.
Masalan, odatiy POM qaramliliklari quyidagi ko'rinishda bo'ladi:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>runtime</scope>
</dependency>
spring-jdbc qaramligini ta'minlash kerak. Ushbu misolda u
spring-boot-starter-data-jpa orqali tranzitiv ravishda olinadi.
DB_CLOSE_ON_EXIT=FALSE dan foydalaning. Agar siz HSQLDB dan foydalanayotgan bo'lsangiz,
shutdown=true ishlatilmasligiga ishonch hosil qiling. Ma'lumotlar bazasini avtomatik yopish funktsiyasini o'chirib qo'yish Spring Boot ga ma'lumotlar bazasini yopish vaqtini nazorat qilish imkonini beradi, shunday qilib bu faqat ma'lumotlar bazasi kerak bo'lmaganda amalga oshirilishini ta'minlaydi.
Ishlab chiqarish ma'lumotlar bazasiga ulanish
DataSource pulining yordamida ishlab chiqarish ma'lumotlar bazasiga ulanishlarni ham avtomatik konfiguratsiyalash mumkin.
DataSource konfiguratsiyasi
DataSource konfiguratsiyasi spring.datasource.* dagi tashqi konfiguratsiya xususiyatlari orqali boshqariladi. Masalan, application.properties da quyidagi bo'limni e'lon qilishingiz mumkin:
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring:
datasource:
url: "jdbc:mysql://localhost/test"
username: "dbuser"
password: "dbpass"
spring.datasource.url xususiyatini o'rnatib URL manzilni ko'rsatishingiz kerak. Aks holda, Spring Boot o'rnatilgan ma'lumotlar bazasini avtomatik konfiguratsiya qilishga harakat qiladi.
spring.datasource.driver-class-name xususiyatidan foydalanishingiz mumkin.
Driver klassiga ishonch hosil qilish kerak, shuning uchun har qanday ishni boshlashdan oldin uni tekshiramiz. Boshqacha qilib aytadigan bo'lsak, agar siz
spring.datasource.driver-class-name=com.mysql.jdbc.Driver o'rnatayotgan bo'lsangiz, bu sinf yuklanadigan bo'lishi kerak.
Qo'llab-quvvatlanadigan parametrlar haqida batafsil ma'lumot uchun DataSourceProperties. Bu haqiqiy amalga oshirilishidan qat'i nazar ishlaydigan standart opsiyalar. Shuningdek, aniq amalga oshirilish uchun mos parametrlarni nozik sozlashingiz mumkin, tegishli prefiksni (spring.datasource.hikari.*, spring.datasource.tomcat.*, spring.datasource.dbcp2.* va spring.datasource.oracleucp.*) ishlatib. Foydalanayotgan havola qilinuvchi havza amalga oshirilishi bo'yicha batafsil ma'lumotni hujjatlarda ko'ring.
Masalan, agar siz Tomcat havza dan foydalanayotgan bo'lsangiz, quyidagi misolda ko'rsatilganidek, ko'plab qo'shimcha parametrlarni sozlashingiz mumkin:
spring.datasource.tomcat.max-wait=10000
spring.datasource.tomcat.max-active=50
spring.datasource.tomcat.test-on-borrow=true
spring:
datasource:
tomcat:
max-wait: 10000
max-active: 50
test-on-borrow: true
Bu kod havzani 10000 ms kutishga sozlaydi, agar ulanish mavjud bo'lmasa, xato tashlanadi, maksimal ulanishlar sonini 50 ga cheklaydi va havzadan ulanishni olishdan oldin uning mavjudligini tekshiradi.
Qo'llab-quvvatlanadigan ulanish havzalari
Spring Boot quyidagi algoritmni ishlatib, aniq amalga oshirilishini tanlaydi:
-
Biz HikariCP ni uning tezkorligi va parallelizmi uchun afzal ko'ramiz. Agar HikariCP dan foydalanish imkoniyati mavjud bo'lsa, biz doimo uni tanlaymiz.
-
Aks holda, agar Tomcat'dan DataSource havzasi mavjud bo'lsa, u ishlatiladi
-
Agar u mumkin bo'lmasa, lekin Commons DBCP2 mavjud bo'lsa, undan foydalanamiz.
-
Agar HikariCP, Tomcat va DBCP2 ni ishlata olmasangiz, ammo Oracle UCP mavjud bo'lsa, undan foydalanamiz.
spring-boot-starter-jdbc yoki
spring-boot-starter-data-jpa "boshlovchi paketlar"dan foydalansangiz, siz avtomatik ravishda
HikariCP qaramligini olasiz.
Bu algoritmni to'liq chetlab o'tib, spring.datasource.type xususiyatini o'rnatib, ishlatiladigan ulanish havzasini belgilashingiz mumkin. Bu ayniqsa, ilova Tomcat konteynerida ishlaganda muhim, chunki tomcat-jdbc standart qilib olish mumkin.
Qo'shimcha ulanish havzalarini har doim DataSourceBuilder dan foydalanib qo'lda sozlashingiz mumkin. Agar siz o'z DataSource binini aniqlasangiz, avtomatik konfiguratsiya amalga oshirilmaydi. DataSourceBuilder quyidagi ulanish havzalarini qo'llab-quvvatlaydi:
-
HikariCP
-
Tomcat orqali DataSource havzasi
-
Commons DBCP2
-
Oracle UCP va
OracleDataSource -
Spring Framework dan
SimpleDriverDataSource -
H2'dan
JdbcDataSource -
PostgreSQL'dan
PGSimpleDataSource -
C3P0
DataSource'ga JNDI orqali ulanish
Agar siz Spring Boot ilovangizni ilova serveriga joylashtirayotgan bo'lsangiz, ilova serverining o'rnatilgan funksiyalari yordamida DataSource ni sozlashingiz va boshqarishingiz va unga JNDI orqali kirishingiz mumkin.
spring.datasource.jndi-name xususiyatini spring.datasource.url, spring.datasource.username va spring.datasource.password xususiyatlariga muqobil sifatida, JNDI orqali ma'lum joydan DataSource ga kirishni ta'minlash uchun ishlatishingiz mumkin. Masalan, quyidagi bo'lim application.properties da ko'rsatilgan, JBoss AS serverida belgilangan DataSource ga qanday kirish mumkinligini ko'rsatadi:
spring.datasource.jndi-name=java:jboss/datasources/customers
spring:
datasource:
jndi-name: "java:jboss/datasources/customers"
GO TO FULL VERSION