JavaRush /Java Blogu /Random-AZ /Spring Boot-da RESTful xidmətinə PostgreSQL verilənlər ba...
Artur
Səviyyə
Tallinn

Spring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək. 1-ci hissə

Qrupda dərc edilmişdir
İcazə verin, onunla başlayım ki, Elleanor Kerrinin “REST İcmal” adlı məqalə silsiləsi çox xoşuma gəldi . Bu məqalələrə keçidlər: Spring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-1 hissəÜmumiyyətlə, azadlığı götürüb onlara bir az da əlavə etmək qərarına gəldim. Məhz, verilənlər bazası yaratmaq və onu bu proqrama necə qoşmaq lazım olduğunu söyləyin. Haradan başlamaq lazımdır? Yəqin ki, verilənlər bazasından. PostgreSQL- dən istifadə etmək qərarına gəldim , çünki onun istifadəçi dostu admin interfeysini bəyəndim. Əvvəlcə PostgreSQL quraşdırıcısını endirməliyik, məsələn, buradan: PostgreSQL Database Download Mən tam quraşdırma prosesini təsvir etməyəcəyəm, çünki əməliyyat sisteminizdən asılı olaraq fərqli ola bilər. Bununla belə, qeyd edirəm ki, prosesdə siz standart postgres rolu (hesab) üçün administrator parolu ilə tanış olmalı və onu 2 dəfə daxil etməlisiniz. Sadəlik üçün parolu 123-ə təyin etdim . Təbii ki, real layihələrdə daha mürəkkəb bir şey ortaya qoymaq lazımdır. Spring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-2 hissəSonra quraşdırma proqramı sizə port seçməyi təklif edir, mən onu standart dəyərində qoyub getdim. Spring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-3 hissəYerli dil də defolt olaraq qaldı. Quraşdırılıb, sonra pgAdminSpring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-4 hissə administrator interfeysini açın . Daha əvvəl yaradılmış parolu daxil etməyimiz istəniləcək bir pop-up pəncərə ilə brauzer açılacaq. İndi interfeys dilini təyin etməliyik. Bunu etmək üçün pgAdmin-i Konfiqurasiya et -> Müxtəlif -> İstifadəçi Dili klikləyin , istədiyiniz dili seçin -> Saxlabrauzer səhifəsini yenidən yükləyin . Səhifənin yuxarı sol küncündə Server üzərinə klikləyin, “ Serverə qoşul ” pəncərəsi görünür . Şifrəmizi yenidən daxil edin və hər dəfə parolu daxil etməmək üçün Saxla Şifrəni qeyd edin. Biz bütün verilənlər bazaları üçün administrator rolundan istifadə etməyə davam edə bilərdik, lakin yeni rol yaratmaq daha yaxşı olardı, çünki bizdə çoxlu verilənlər bazası və onlardan istifadə edən çoxlu proqramlar ola bilər. Bunu etmək üçün, yuxarı sol küncdə, PostgreSQL 12 --> Giriş/Qrup Rollarında RMB --> Yarat --> Giriş/Qrup Rolu üzərinə klikləyin Açılan pəncərədə “ Ümumi ” sekmesinde, rolun adı. Rolu kök adlandırdım . “ Tərif ” sekmesinde yeni parol yaradırıq, çaşqınlıq olmasın deyə 123 buraxdım. " Hüquqlar " sekmesine keçin və bütün lazımi elementləri qeyd edin. Mən bütün elementləri " YES " olaraq təyin etdim . “ Saxla ” düyməsini basın Biz verilənlər bazası yaratmağa davam edirik. "Verilənlər bazaları" üzərinə sağ klikləyin --> Yarat --> Verilənlər bazası " Ümumi " sekmesinde verilənlər bazasının adını yaradın. Qoy, məsələn, müştərilər olsun . Əvvəlki addımda yaratdığımız sahibi kökə təyin edirik. Üstündə "Spring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-5 hissəSpring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-6 hissəSpring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-7 hissə Spring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-8 hissəSpring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-9 hissəSpring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-10 hissəSpring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-11 hissə Spring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-12 hissəSpring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-13 hissəTərif » kodlaşdırmanın UTF8 olaraq təyin olunduğunu yoxlayın . " Saxla " düyməsini basın. Budur, verilənlər bazamız yaradıldı (hələlik boşdur). Spring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-14 hissəBu nöqtədə pgAdmin ilə bitirə bilərik, çünki... Cədvəlləri proqramlı şəkildə yaradacağıq, lakin hər ehtimala qarşı əl ilə cədvəl yaratmağı sizə göstərəcəyəm. Müştəriləri genişləndirin --> Sxemlər --> ictimai ağac . Cədvəllər --> Yarat --> Cədvəl üzərinə sağ vurun . Spring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-15 hissəPop-up pəncərəsi açılacaq. “ Ümumi ” sekmesinde biz cədvəlimizə ad təyin edirik, məsələn, test_table , və sahibi kimi kök təyin edirik . Spring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-16 hissəSütunlar ” sekmesine keçin, yeni sütun yaratmaq üçün “ + ” üzərinə klikləyin. “ id ” adını və böyük seriyalı məlumat növünü daxil edin, bu Java-da Uzun tipə bərabərdir , lakin avtomatik artımla (yeni qeyd əlavə edərkən id avtomatik olaraq bir artacaq). NULL olmayanı “ Bəli ” olaraq qeyd edirik , əsas açar da “ Bəli ”dir. Spring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-17 hissəEyni şəkildə “ ad ”, “ e-poçt ” və “ telefon ” sütunlarını yaradırıq . Biz dəyişən məlumat tipi simvolunu seçirik , bu, String növünə uyğundur , lakin maksimum uzunluğu təyin etməyə imkan verir. Tam adı doldurmaq üçün maksimum ad uzunluğunu 200 simvol təyin etdik. bir sütunda. Maksimum e-poçt uzunluğunu 254 simvol olaraq təyin edirik . E-poçtun niyə belə maksimum uzunluğa malik olduğunu burada tapa bilərsiniz . Telefon nömrəsi üçün 20 simvol seçin, bu kifayətdir. Telefon nömrələri haqqında bir az: Proqramçıların telefon nömrələri haqqında yanlış təsəvvürləri (Habr) Bu məlumatların məcburi olmasını istəyiriksə, bütün sütunlarda NULL olmayanları “ Bəli ” kimi qeyd edirik. " Saxla " düyməsini basın. Budur, cədvəl yaradıldı. Spring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-18 hissəTest cədvəlimizi silmək üçün üzərinə sağ klikləyin (ağacda) və “ sil ”, çünki Bizə artıq ehtiyac yoxdur, çünki proqramımızdan cədvəllər yaradacağıq. pgAdmin-i bağlayın və proqramımıza keçin. Gəlin IDEA-nı layihəmizlə açaq. İnterfeysin sağ sütununda verilənlər bazasına klikləyin , verilənlər bazamızı əlavə etmək üçün “ + ” üzərinə klikləyin. Növbəti Məlumat Mənbəsi -> PostgreSQL . Spring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  Hissə 1 - 19Açılan pəncərədə İstifadəçi sahəsinə əvvəllər yaratdığımız kök rolunu və şifrəmizi daxil edin123 parol sahəsində . Verilənlər bazası sahəsinə müştərilərimizin verilənlər bazasının adını yazırıq . Düyməni sıxırıq Test Bağlantısı , onun altında yaşıl bir onay işareti görsək, hər şey qaydasındadır və düyməni basırıq OK . Budur, verilənlər bazasına qoşulduq, indi pom.xmlSpring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-20 hissə faylına keçək və asılılıqlar əlavə edək. ORM verilənlər bazası ilə işləmək üçün :
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
REST nəzarətçisi yaratmaq üçün:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
Tomcat serveri üçün:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
PostgreSQL üçün:
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.10</version>
</dependency>
İndi pom.xml-ni çeşidlədik, gəlin resurslar qovluğuna keçək və application.properties faylını aşağıdakı kimi dolduraq:
spring.datasource.url=jdbc:postgresql://localhost:5432/customers
spring.datasource.username=root
spring.datasource.password=123

spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.database=postgresql
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL10Dialect
Burada verilənlər bazamızın URL-ini daxil etdik, onun üçün loqin və parol təqdim etdik, PostgreSQL üçün sürücünü qeydiyyatdan keçirdik, PostgreSQL məlumat növündən istifadə edəcəyimizi bildirdik və Hibernate üçün dialekt təyin etdik. Sonra eyni resurslar qovluğunda verilənlər bazası adlı yeni qovluq yaradaq . Bu kataloqda biz 2 fayl yaradacağıq: initDB.sqlpopulateDB.sql . Birincisi cədvəllərin yaradılmasına, ikincisi ilkin olaraq onların doldurulmasına cavabdeh olacaq. Gəlin initDB.sql-i açaq və yuxarıda SQL dialektinin konfiqurasiya edilmədiyini bildirən yaşıl çubuq görək . Bu o deməkdir ki, biz layihəmiz üçün SQL ləhcəsini seçməmişik (və onlardan bir neçəsi var). Dəyişiklik dialektini… yazısında eyni zolağın sağ tərəfinə klikləyin . Açılan pəncərədə Project SQL Dialekti üzərinə klikləyin və verilənlər bazamız PostgreSQL olduğundan eyni adlı ləhcəni seçirik. OK düyməsini basın Gəlin .sqlSpring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazası əlavə etmək.  1-21 hissə fayllarımızı doldurmağa davam edək . Əvvəlcə initDB.sql faylını dolduraq :
CREATE TABLE IF NOT EXISTS clients
(
    id    BIGSERIAL PRIMARY KEY ,
    name  VARCHAR(200) NOT NULL ,
    email VARCHAR(254) NOT NULL ,
    phone VARCHAR(20)  NOT NULL
);
Əgər faylı doldurduqdan sonra müştərilərdən başqa bəzi sözlər ağ şriftlə yazılıbsa, mətnin içinə sağ klikləyin və Dialekti dəyişdir -> PostgreSQL-i yenidən seçin . Yəqin ki, artıq başa düşdüyünüz kimi, bu, test cədvəlini əl ilə yaratarkən doldurduğumuz eyni məlumatlardır. Burada onlar SQL dilinin PostgreSQL dialektində formatlaşdırılıblar. İndi populateDB.sql faylını dolduraq :
INSERT INTO clients VALUES
(1, 'Vassily Petrov', 'vpetrov@jr.com', '+7 (191) 322-22-33)'),
(2, 'Pjotr Vasechkin', 'pvasechkin@jr.com', '+7 (191) 223-33-22)');
Müştərilər cədvəlinizin adı qırmızı hərflərlə yazılıbsa, eybi yoxdur. Məsələ ondadır ki, biz hələ bu cədvəli yaratmamışıq və IDEA hələ onu tanımır. Cədvəl yaratmaq və doldurmaq üçün biz application.properties faylına qayıtmalı və oraya aşağıdakı üç sətri əlavə etməliyik:
spring.datasource.initialization-mode=ALWAYS
spring.datasource.schema=classpath*:database/initDB.sql
spring.datasource.data=classpath*:database/populateDB.sql
Bu sətirlərdə verilənlər bazasını proqramlı şəkildə işə salmaq istədiyimizi deyirik və bunun üçün hansı faylların istifadə edilməsi lazım olduğunu göstəririk. Sonra, tətbiqimizin əsas metoduna keçin və onu işə salın . Bundan sonra pgAdmin --> Serverlər --> PostgreSQL 12 --> Verilənlər bazaları --> müştərilər --> Sxemlər --> ictimai bölməsinə keçin, " Cədvəllər ", " Yeniləmə " üzərinə sağ klikləyin . Hər şey qaydasındadırsa, onda biz yaratdığımız müştərilər cədvəlini görürük . Bundan sonra, application.properties faylına qayıdın və xətti şərh edin.
spring.datasource.data=classpath*:database/populateDB.sql
aşağıdakı kimi:
spring.datasource.url=jdbc:postgresql://localhost:5432/customers
spring.datasource.username=root
spring.datasource.password=123

spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.database=postgresql
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL10Dialect

spring.datasource.initialization-mode=ALWAYS
spring.datasource.schema=classpath*:database/initDB.sql
#spring.datasource.data=classpath*:database/populateDB.sql
Bunu etməsək, növbəti dəfə proqramı işə saldıqda aşağıdakı xətanı alacağıq: org.postgresql.util.PSQLException: XƏTA: Dublikat açar dəyəri unikal "clients_pkey" məhdudiyyətini pozur . Bu ona görə baş verir ki, biz artıq cədvəldə id 12 olan sahələri doldurmuşuq (hətta ilk işə salınma zamanı). Yaratdığımız cədvəldə id sahəsi Java-da Long növünə uyğun gələn bigserial olaraq göstərilmişdir . Bununla belə, proqramımızda bu sahənin növü Tam ədəddir . Mən Longdan (BIGSERIAL) necə istifadə olunacağını göstərmək qərarına gəldim, çünki o, Tam ədəddən daha böyük diapazona malikdir. Fakt budur ki, cədvəllərdə Əsas Açar kimi təyin olunmuş sahə yalnız istifadəçi identifikatorlarını saxlamaq üçün deyil , həm də geniş çeşidli məlumatların indekslərini saxlamaq üçün istifadə edilə bilər və belə qeydlərin sayı maksimum Tam dəyərini keçə bilər. Məsələn, proqramımız hər saniyə bəzi ölçmələr aparırsa və məlumatları cədvələ yazırsa. Uzun məlumat tipindən istifadə etmək üçün siniflərimizi yenidən yazmaq üçün id sahəsindən istifadə edən bütün siniflərdə və metodlarda növü Tam ədəddən Longa dəyişməliyik . Biz bunu etməyəcəyik, çünki proqram ilk olaraq müəllif tərəfindən id Integer növü üçün yazılmışdır, yəni bunun müəyyən mənada olduğunu göstərir. Davam etmək üçün bir daha yaratdığımız müştərilər cədvəlini verilənlər bazamızdan silək, lakin indi bunu əl ilə deyil, proqramla etməyə çalışacağıq. Bunu etmək üçün initDB.sql faylında kodumuzu şərh edin və bir sətir əlavə edin:
-- CREATE TABLE IF NOT EXISTS clients
-- (
--     id    BIGSERIAL PRIMARY KEY ,
--     name  VARCHAR(200) NOT NULL ,
--     email VARCHAR(254) NOT NULL ,
--     phone VARCHAR(20)  NOT NULL
-- );
DROP TABLE IF EXISTS clients
Proqramı işə salaq, pgAdmin- ə gedək, “ Cədvəllər ” ( müştərilərimizin verilənlər bazasında ) - ->Yenilə ” üzərinə sağ klikləyin və cədvəlimizin yoxa çıxdığını görəcəyik. NB! Bu əmrdən istifadə edərkən diqqətli olun, əks halda cədvəlinizdə olan bütün məlumatları itirmək riskiniz var! Gəlin initDB.sql faylına qayıdaq və onu aşağıdakı kimi yenidən yazaq:
CREATE TABLE IF NOT EXISTS clients
(
    id    SERIAL PRIMARY KEY ,
    name  VARCHAR(200) NOT NULL ,
    email VARCHAR(254) NOT NULL ,
    phone VARCHAR(50)  NOT NULL
);
Burada id tipini SERIAL olaraq dəyişdik , bu da proqramımızda id sahəsi üçün istifadə etdiyimiz Tam ədəd növünə uyğun gəlir. Bundan əlavə, telefon sahəsinin maksimum uzunluğu artırılıb ki, biz onun yazısında boşluqlardan və xüsusi simvollardan (mötərizə, tire və s.) sərbəst istifadə edə bilək. Telefon nömrəsindəki rəqəmlərin maksimum sayı hazırda 18 rəqəmdir (yaddaşım mənə düzgün xidmət edirsə). Əmin olmaq üçün ölçüsünü 50 simvol olaraq təyin etdim. application.properties faylına keçək və sətri şərhdən çıxaraq:
spring.datasource.data=classpath*:database/populateDB.sql
Proqramımızı işə salaq, pgAdmin-ə gedək, cədvəlimizin yaradıldığını yoxlayın və bu sətri geri şərh edin.
#spring.datasource.data=classpath*:database/populateDB.sql
Məqalənin birinci hissəsini yəqin ki, burada bitirəcəm. Ümid edirəm bəyənərsiniz, şərh yazın (bəyənməsəniz belə). İkinci hissədə biz siniflərimizi yenidən yazacağıq ki, onlar real verilənlər bazası ilə işləyə bilsinlər. Davam: Spring Boot-da RESTful xidmətinə PostgreSQL verilənlər bazasının əlavə edilməsi. Part 2 UPD Moderatorlara şəkillərimi və mətn formatını düzəltdiklərinə görə təşəkkürlər!
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION