Elleanor Kerriniň “REST Syn” atly makalalar tapgyryny gaty haladym diýmek bilen başlaýaryn . Ine, şu makalalara baglanyşyklar:
Umuman, azatlygy alyp, olara azajyk goşmak kararyna geldim. Aagny, maglumat bazasyny nädip döretmelidigini we ony bu programma birikdirmelidigini aýdyň. Nireden başlamaly? Maglumat bazasynyň özünden bolsa gerek. PostgreSQL ulanmagy makul bildim , sebäbi ulanyjy üçin amatly administrator interfeýsini haladym. Ilki bilen, “PostgreSQL” gurnaýjysyny göçürip almaly, mysal üçin şu ýerden: PostgreSQL maglumat bazasyny göçürip almak Men doly gurnama işini suratlandyrjak däl, sebäbi operasiýa ulgamyňyza baglylykda tapawutlanyp biler. Şeýle-de bolsa, bu işde adaty postgres roly (hasaby) üçin administrator parolyny tapmalydygyňyzy we 2 gezek girizmelidigiňizi belläp geçýärin. Ityönekeýlik üçin paroly 123-e belledim . Elbetde, hakyky taslamalarda has çylşyrymly bir zat oýlap tapmak zerur.
Ondan soň, gurnama programmasy size port saýlamagy maslahat berýär; men ony asyl bahasynda goýdum.
Lokal hem adaty ýagdaýda galdyryldy.
Guruldy, soňra administrator interfeýsini açyň pgAdmin . Brauzer açylan penjire bilen açylar, bu ýerde ozal döredilen paroly girizmegimiz soralar.
Indi interfeýs dilini düzmeli. Munuň üçin pgAdmin -> Dürli -> Ulanyjy dilini sazlaň , islenýän dili saýlaň -> Saklaň we brauzer sahypasyny täzeden ýükläň .
Sahypanyň ýokarky çep burçunda Serwere basyň, " Serwere birikmek " penjiresi peýda bolýar . Parolymyzy täzeden giriziň we her gezek girmezlik üçin paroly ýatda saklaň.
Datahli maglumat bazalary üçin administrator roluny ulanmagy dowam etdirip bilerdik, ýöne täze rol döretmek has gowy bolardy, sebäbi maglumatlar bazalarymyz we olary ulanýan köp programmalarymyz bolup biler. Munuň üçin çep ýokarky burçda, PostgreSQL 12 -> Giriş / Topar rollaryndaky RMB basyň -> Dörediň -> Giriş / Toparyň roly
Açylýan penjirede, " Umumy " goýmasynda, giriň roluň ady. Roluň adyny tutdum .
“ Kesgitleme ” goýmasynda täze parol döredýäris, bulaşmazlyk üçin 123 goýdum. “ Hukuklar
” goýmasyna giriň we ähli zerur zatlary belläň. Itemshli zatlary " Hawa " diýip belledim . " Saklamak " düwmesine basyň Maglumat bazasyny döretmäge dowam edýäris. “Maglumatlar bazalary” -> Dörediň -> Maglumatlar bazasyna sag basyň, “ Umumy ” goýmasynda maglumat bazasynyň adyny dörediň. Mysal üçin, müşderiler bolsun . Öňki ädimde döreden kökümizi eýesine belläris . Üstünde "
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm]()
Kesgitleme » UTF8 kodlaýyş toplumynyň bardygyny barlaň . " Saklamak " düwmesine basyň. Ine, maglumatlar bazamyz döredildi (häzirlikçe boş).
Bu pursatda pgAdmin bilen gutaryp bileris, sebäbi ... Tablisa programma taýdan dörederis, ýöne şeýle bolan ýagdaýynda, el bilen tablisany nädip döretmelidigini görkezerin. Müşderileri giňeltmek -> Shemalar -> köpçülikleýin agaç . Tablisa -> Döret -> Tablisa sag basyň .
Açylýan penjire açylar. “ Umumy ” goýmasynda, mysal üçin test_table , stolumyza bir at belleýäris we kök eýesi hökmünde belläris . " Sütünler
" goýmasyna giriň we täze sütün döretmek üçin " + " düwmesine basyň . “ Id ” adyny we Java görnüşindäki Uzyn görnüşe ekwiwalent , ýöne awtomatik artdyrmak bilen (täze ýazgy goşulanda id awtomatiki usulda köpelýär) maglumat görnüşini giriziň. NULL däl diýip “ Hawa ” diýip belleýäris, esasy açar hem “ Hawa ”. “ Ady ”, “ e-poçta ” we “ telefon ” sütünlerini şol bir görnüşde döredýäris . Maglumatlaryň görnüşiniň üýtgeýänini saýlaýarys , bu setir görnüşine gabat gelýär , ýöne iň ýokary uzynlygy kesgitlemäge mümkinçilik berýär. Doly ady doldurmak üçin iň ýokary at uzynlygyny 200 nyşana belledik . bir sütünde. Iň köp e-poçta uzynlygyny 254 nyşana belledik . E-poçta näme üçin beýle uzynlygyň bardygyny şu ýerden tapyp bilersiňiz . Telefon belgisi üçin 20 simwoly saýlaň, bu ýeterlik bolmaly. Telefon belgileri barada azajyk: Programmistleriň telefon belgileri (Habr) baradaky ýalňyş düşünjeleri, bu maglumatlaryň hökmany bolmagyny islesek, ähli sütünlerde NULL däl diýip bellik edýäris. " Saklamak " düwmesine basyň. Ine, tablisa döredildi. Synag tablisamyzy pozmak üçin, onuň üstünde sag basyň (agaçda) we " poz ", sebäbi Mundan beýläk bize zerurlyk ýok, sebäbi programmamyzdan tablisalar dörederis. PgAdmin-i ýapyň we programmamyza giriň. Taslamamyz bilen IDEA açalyň. Interfeýsiň sag sütünindäki Maglumat bazasyna basyň , maglumatlar bazamyzy goşmak üçin “ + ” düwmesine basyň. Indiki maglumatlar çeşmesi -> PostgreSQL . Açylýan penjirede Ulanyjy meýdanyna ozal döreden kök rolumyzy we parolymyzy giriziň![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm]()
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-18-nji bölüm]()
Parol meýdançasynda 123 _ Maglumat bazasy meýdanynda müşderilerimiziň maglumatlar bazasynyň adyny ýazýarys . Test Connection düwmesini basýarys , aşagynda ýaşyl bellik görsek, hemme zat tertipli we OK düwmesini basýarys . Ine, maglumatlar bazasyna birikdik, indi pom.xml
faýlyna geçeliň we garaşlylygy goşalyň. ORM maglumatlar bazasy bilen işlemek üçin :
faýllarymyzy doldurmaga geçeliň . Ilki bilen initDB.sql faýlyny dolduralyň :
- 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
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm](https://cdn.javarush.com/images/article/3b02a24a-079f-4e23-9245-2571bfa34a78/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm](https://cdn.javarush.com/images/article/e67312ba-1234-4b22-8d8b-41fd4e6a1715/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm](https://cdn.javarush.com/images/article/857bbc16-1b17-42d5-aa7b-83c9d03ecff9/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm](https://cdn.javarush.com/images/article/59ceb969-4591-46c2-8527-77b6c134ce75/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm](https://cdn.javarush.com/images/article/5542c356-13fd-4907-a52e-04b8a769ce49/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-7-nji bölüm](https://cdn.javarush.com/images/article/fa331eab-4750-4e50-b675-a9d9c42579c2/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm](https://cdn.javarush.com/images/article/de331482-0c9b-47df-8cd0-3e60a2286c72/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm](https://cdn.javarush.com/images/article/cc9afc7e-c897-4f8d-82d3-50a785f4d9fc/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-10-njy bölüm](https://cdn.javarush.com/images/article/9e8755bf-ef67-48ec-8230-7d9fcaa42598/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm](https://cdn.javarush.com/images/article/cef886e4-a846-47eb-9d30-bac3d5cbdd73/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm](https://cdn.javarush.com/images/article/1500f7cc-e5a3-4c11-a308-7b56d2a6f092/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm](https://cdn.javarush.com/images/article/96aee8bb-df7d-4a16-b6b9-fa02a1ecd5b9/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm](https://cdn.javarush.com/images/article/a5afb34f-a6a1-4aa9-9ca8-24872baefb11/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-15-nji bölüm](https://cdn.javarush.com/images/article/fe41bf80-af33-403f-b3c2-4d8bb0ee3ef0/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-16-njy bölüm](https://cdn.javarush.com/images/article/fd87e660-5e7b-4eb2-a2e4-1833ceda3b3c/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm](https://cdn.javarush.com/images/article/f8401b71-881c-4a7c-ac21-d362850a03da/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-18-nji bölüm](https://cdn.javarush.com/images/article/1ec4945c-a216-426f-93e6-117ae343f8c6/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm](https://cdn.javarush.com/images/article/0dfec16b-85ba-4ce9-8412-146337cc0ffb/original.png)
![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm](https://cdn.javarush.com/images/article/bc9dacc8-af6e-40b7-85aa-9e2b79858c23/original.png)
<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![“PostgreSQL” maglumat bazasyny “Bahar boot” -da RESTful hyzmatyna goşmak. 1-nji bölüm](https://cdn.javarush.com/images/article/26dca57a-df1f-43cf-b349-c074b4b7f3e8/original.png)
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