Elleanor Kerriniň “REST Syn” atly makalalar tapgyryny gaty haladym diýmek bilen başlaýaryn . Ine, şu makalalara baglanyşyklar:
- REST-e syn. 1-nji bölüm: IEST GOWY näme
- REST-e syn. 2-nji bölüm: Müşderi bilen serweriň arasyndaky aragatnaşyk
- REST-e syn. 3-nji bölüm: Bahar aýakgabynda IEST GOWY hyzmat döretmek
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
REST gözegçisini döretmek üçin:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
Tomcat serweri üçin:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
PostgreSQL üçin:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.10</version>
</dependency>
Indi pom.xml-i düzenimizden soň, çeşmeler bukjasyna geçeliň we application.properties faýlyny aşakdaky ýaly dolduralyň:
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
Bu ýerde maglumatlar bazamyzyň URL-sini girizdik, giriş we paroly üpjün etdik, PostgreSQL üçin sürüjini hasaba aldyk, PostgreSQL maglumat görnüşini ulanjakdygymyzy görkezdik we Gibernate üçin şiwäni kesgitledik. Ondan soň, şol bir çeşmeler bukjasynda maglumatlar bazasy atly täze katalog döredeliň . Bu bukjada 2 faýl dörederis: initDB.sql we populateDB.sql . Birinjisi tablisalary döretmek üçin, ikinjisi başda doldurmak üçin jogapkärçilik çeker. InitDB.sql açalyň we ýokarsynda SQL şiwesiniň sazlanmandygyny aýdýan ýaşyl çyzgyny göreliň . Diýmek, taslamamyz üçin SQL şiwesini saýlamadyk (we olaryň birnäçesi bar). Şol bir zolagyň sag tarapyna basyň, şiwäni üýtgediň… . Açylýan penjirede Taslama SQL Dialektine basyň we maglumatlar bazamyz PostgreSQL bolansoň , şol bir atyň şiwesini saýlaýarys. OK basyň Geliň .sql faýllarymyzy doldurmaga geçeliň . Ilki bilen initDB.sql faýlyny dolduralyň :
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
);
Faýly dolduranyňyzdan soň, müşderilerden başga käbir sözler ak şrift bilen ýazylan bolsa, tekstiň içine sag basyň we Dialect Change -> PostgreSQL saýlaň . Mümkin, eýýäm düşünşiňiz ýaly, synag tablisasyny el bilen döredenimizde dolduran şol maglumatlar. Bu ýerde SQL diliniň PostgreSQL şiwesinde formatlanýar. Indi populateDB.sql faýlyny dolduralyň :
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üşderileriň tablisasynyň ady gyzyl harplar bilen ýazylan bolsa , gowy bolmaz. Esasy zat, bu tablisany entek döretmedik we IDEA entek tanamaýar. Tablisa döretmek we köpeltmek üçin application.properties faýlyna dolanmaly we şol ýere aşakdaky üç setiri goşmaly:
spring.datasource.initialization-mode=ALWAYS
spring.datasource.schema=classpath*:database/initDB.sql
spring.datasource.data=classpath*:database/populateDB.sql
Bu setirlerde maglumatlar bazasyny programma taýdan başlamak we munuň üçin haýsy faýllary ulanmalydygyny görkezmek isleýäris. Ondan soň, programmamyzyň esasy usulyna geçiň we işe giriziň . Ondan soň pgAdmin -> Serwerler -> PostgreSQL 12 -> Maglumatlar bazalary -> müşderiler -> shemalar -> köpçülige giriň, " Tablisa ", " Täzelenme " -e sag basyň . Hemme zat gowy geçen bolsa, onda döreden müşderilerimiziň tablisasyny görýäris . Ondan soň, application.properties faýlyna gaýdyp , setiri düşündiriň.
spring.datasource.data=classpath*:database/populateDB.sql
aşakdaky ýaly:
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
Muny etmesek, indiki gezek programmany işledenimizde aşakdaky ýalňyşlygy alarys: org.postgresql.util.PSQLException: RAL .YŞLYK: Dublikat açar bahasy özboluşly çäklendirmäni "müşderiler_pkey" bozýar . Bu, eýýäm tablisada ID 1 we 2 bilen meýdanlary doldurandygymyz sebäpli bolýar (hatda ilkinji işe girizilende-de). Döreden tablisamyzda id meýdançasy Java-daky Uzyn görnüşe gabat gelýän bigserial hökmünde görkezilýär . Şeýle-de bolsa, programmamyzda bu ugur üçin görnüş “Integer” . Uzyn (BIGSERIAL) nädip ulanmalydygyny görkezmegi makul bildim, sebäbi Integer-den has uly aralyk. Hakykat, tablisalarda başlangyç açar hökmünde kesgitlenen meýdan diňe bir ulanyjy şahsyýetnamalaryny saklamak üçin däl , eýsem dürli maglumatlaryň indekslerini saklamak üçin hem ulanylyp bilner we şeýle ýazgylaryň sany iň ýokary Integer bahasyndan ýokary bolup biler. Mysal üçin, programmamyz her sekuntda käbir ölçegleri alyp, maglumatlary tablisa ýazsa. Uzyn maglumat görnüşini ulanmak üçin synplarymyzy täzeden ýazmak üçin, id meýdançasyny ulanýan ähli synplarda we usullarda görnüşini Integer-den Long-a üýtgetmeli . Muny etmeris, sebäbi programma başda awtor tarapyndan “Integer” görnüşi üçin ýazylan , munuň manysy bar. Dowam etmek üçin, maglumatlar bazamyzdan döreden müşderilerimiziň tablisasyny ýene bir gezek aýyralyň , ýöne indi muny el bilen däl-de, programma taýdan ýerine ýetirmäge synanyşarys. Munuň üçin initDB.sql faýlyndaky kodumyzy düşündiriň we bir setir goşuň:
-- 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
Programmany işe başlalyň, pgAdmin- e geçeliň, “ Tablisa ” ( müşderilerimiziň maglumatlar bazasynda ) sag düwmesine basyň - -> “ Täzelen ”, stolumyzyň ýok bolandygyny göreris. NB! Bu buýrugy ulananyňyzda seresap boluň, ýogsam stoluňyzdaky ähli maglumatlary ýitirmek howpy abanýar! Geliň, initDB.sql faýlyna gaýdyp , ony aşakdaky ýaly ýazalyň:
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
);
Bu ýerde, programmamyzdaky id meýdançasy üçin ulanýan Integer görnüşimize gabat gelýän id görnüşini SERIAL diýip üýtgetdik . Mundan başga-da, ýazuwda boşluklary we ýörite nyşanlary (gabygyň, çyzgylaryň we ş.m.) erkin ulanyp bilmek üçin telefon meýdançasynyň iň uzynlygy ýokarlandy. Telefon belgisindäki iň köp san häzirki wagtda 18 san (ýadyma dogry hyzmat edýän bolsa). Elbetde, ululygyny 50 simwola belledim. Programma.properties faýlyna geçeliň we setiri açmak:
spring.datasource.data=classpath*:database/populateDB.sql
Geliň, programmamyzy işledeliň, pgAdmin-e gideliň, stolumyzyň döredilendigini barlaň we bu setiri yzyna düşündiriň.
#spring.datasource.data=classpath*:database/populateDB.sql
Ine, makalanyň birinji bölümini gutararyn. Halaýarsyňyz, teswir ýazyň (halamasaňyzam) diýip umyt edýärin. Ikinji bölümde, hakyky maglumat bazalary bilen işlemekleri üçin synplarymyzy täzeden ýazarys. Dowamy: “Spring Boot” -daky RESTful hyzmatyna PostgreSQL maglumat bazasyny goşmak. 2-nji bölüm UPD Suratlarymy we tekst formatlamasyny düzedendigi üçin moderatorlara sag bolsun aýdýaryn!
GO TO FULL VERSION