JavaRush /Блоги Java /Random-TG /Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTf...
Artur
Сатҳи
Tallinn

Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot. Қисми 1

Дар гурӯҳ нашр шудааст
Иҷозат диҳед аз он оғоз кунам, ки ман аз силсилаи мақолаҳои Эллеанор Керрӣ бо номи "Баррасии REST" хеле лаззат бурдам. Инҳо пайвандҳо ба ин мақолаҳо мебошанд: Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Қисми 1 - 1Умуман, ман тасмим гирифтам, ки озодиро гирифта, ба онҳо каме илова кунам. Махсусан, бигӯед, ки чӣ гуна пойгоҳи додаҳо эҷод кунед ва онро ба ин барнома пайваст кунед. Аз куҷо сар кардан? Шояд аз худи база бошад. Ман қарор додам, ки PostgreSQL-ро истифода барам , зеро ба ман интерфейси администратори барои корбар дӯстона маъқул буд. Аввалан, мо бояд насбкунандаи PostgreSQL-ро зеркашӣ кунем, масалан аз ин ҷо: Зеркашии пойгоҳи додаҳои PostgreSQL Ман раванди насби пурраро тавсиф намекунам, зеро он метавонад вобаста ба OS-и шумо фарқ кунад. Аммо, ман қайд мекунам, ки дар ин раванд ба шумо лозим меояд, ки гузарвожаи администраторро барои нақши пешфарз postgres (ҳисоб) пайдо кунед ва онро 2 маротиба ворид кунед. Барои содда, ман паролро ба 123 гузоштам . Албатта, дар лоиҳаҳои воқеӣ чизи мураккабтарро пешниҳод кардан лозим аст. Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Қисми 1 - 2Баъдан, барномаи насбкунӣ аз шумо хоҳиш мекунад, ки портро интихоб кунед; Ман онро бо арзиши пешфарзаш гузоштам. Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Қисми 1 - 3Маҳалли низ ҳамчун пешфарз гузошта шуд. Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Қисми 1 - 4Насб карда шуд, пас интерфейси администраторро кушоед pgAdmin . Браузер бо равзанаи поп-ап кушода мешавад, ки дар он аз мо хоҳиш карда мешавад, ки пароли қаблан сохташударо ворид кунем. Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Кисми 1 — 5Акнун мо бояд забони интерфейсро танзим кунем. Барои ин, клик кунед Танзимот pgAdmin --> Дигар --> Забони корбар , забони дилхоҳро интихоб кунед --> Захира , ва саҳифаи браузерро аз нав бор кунед . Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Қисми 1 - 6Дар кунҷи чапи болоии саҳифа Серверро клик кунед, равзанаи " Пайваст ба server " пайдо мешавад . Боз пароли моро ворид кунед ва қуттии Захираи паролро қайд кунед , то ҳар дафъа онро ворид накунед. Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Қисми 1 - 7Мо метавонистем истифодаи нақши администраторро барои ҳама пойгоҳи додаҳо идома диҳем, аммо беҳтар мебуд, ки нақши нав эҷод кунем, зеро мо метавонем базаҳои зиёде ва барномаҳои зиёде дошта бошем, ки онҳоро истифода мебаранд. Барои ин, дар кунҷи чапи болоии PostgreSQL 12 --> RMB дар Вуруд/Нақшҳои гурӯҳӣ --> Эҷод --> Воридшавӣ/Нақши гурӯҳро Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Кисми 1 — 8 клик кунед Дар равзанаи поп-ап дар ҷадвали " Умумӣ " -ро ворид кунед. номи роль. Ман решаи нақшро номбар кардам . Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Кисми 1 — 9Дар ҷадвали " Таъриф " мо пароли нав эҷод мекунем, ман 123-ро гузоштам , то ошуфта нашавам. Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Кисми 1 — 10Ба ҷадвали " Ҳуқуқҳо " гузаред ва ҳамаи ҷузъҳои заруриро қайд кунед. Ман ҳама ҷузъҳоро ба " ҲА " муқаррар кардам . " Захира " -ро клик кунед Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Кисми 1 — 11Мо ба эҷоди пойгоҳи додаҳо идома медиҳем. Тугмаи рости мушро пахш кунед "Махзанаҳои маълумот" --> Эҷод --> Пойгоҳи дода Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Кисми 1 — 12 Дар ҷадвали " Умумӣ " номи махзани маълумотро эҷод кунед. Бигзор он, масалан, муштариён бошад . Мо соҳибро ба root таъин мекунем , ки мо дар қадами қаблӣ офаридаем. Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Кисми 1 — 13Дар бораи "Таъриф » санҷед, ки мо рамзгузориро ба UTF8 муқаррар кардаем . " Захира " -ро клик кунед. Ин аст, базаи мо сохта шуд (ҳоло холӣ). Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Кисми 1 — 14Дар ин лаҳза мо метавонем бо pgAdmin хотима диҳем, зеро... Мо ҷадвалҳоро ба таври барномавӣ эҷод мекунем, аммо дар ҳар сурат, ман ба шумо нишон медиҳам, ки чӣ гуна ҷадвалро дастӣ созед. Мизоҷонро васеъ кунед --> Схемаҳо --> дарахти ҷамъиятӣ . Ҷадвалҳо --> Эҷод --> Ҷадвалро бо тугмаи рост клик кунед . Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Кисми 1 — 15Равзанаи поп-ап кушода мешавад. Дар ҷадвали " Умумӣ " мо ба ҷадвали худ ном таъин мекунем, масалан test_table , ва решаро ҳамчун соҳиб таъин мекунем . Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Кисми 1 — 16Ба ҷадвали " Сутунҳо " гузаред, барои сохтани сутуни нав " + " -ро клик кунед . Номи “ id ” ва навъи маълумотро ворид кунед bigserial , ки ба навъи Long дар Java баробар аст, аммо бо афзоиши худкор (ҳангоми илова кардани сабти нав, id ба таври худкор як маротиба зиёд мешавад). Мо ғайри NULL-ро ҳамчун “ Ҳа ” қайд мекунем, калиди асосӣ низ “ Ҳа ” аст. Мо сутунҳои “ ном ”, “ почтаи электронӣ ” ва “ телефонИлова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Кисми 1 — 17 ”-ро ҳамин тавр эҷод мекунем . Мо аломати навъи маълумотро интихоб мекунем , ки ин ба навъи сатр мувофиқат мекунад , аммо ба шумо имкон медиҳад, ки дарозии максималиро муқаррар кунед. Мо барои пур кардани номи пурра дарозии номро то 200 аломат муқаррар кардем. дар як сутун. Мо дарозии максималии почтаи электрониро то 254 аломат муқаррар кардем. Чаро почтаи электронӣ чунин дарозии ҳадди аксарро дар ин ҷо пайдо кардан мумкин аст . Барои рақами телефон, 20 аломатро интихоб кунед, ин бояд кофӣ бошад. Каме дар бораи рақамҳои телефонӣ: Фаҳмиши нодурусти барномасозон дар бораи рақамҳои телефон (Habr) Мо дар ҳама сутунҳо ғайри NULL-ро ҳамчун “ Ҳа ” қайд мекунем, агар мо хоҳем, ки ин маълумот ҳатмӣ бошад. " Захира " -ро клик кунед. Хамин аст, миз сохта шуд. Барои нест кардани ҷадвали санҷишии мо, онро (дар дарахт) бо тугмаи рости муш клик кунед ва " тоза кунед ", зеро Мо дигар ба он ниёз надорем, зеро мо аз барномаи худ ҷадвалҳо эҷод мекунем. pgAdmin-ро пӯшед ва ба барномаи мо равед. Биёед IDEA-ро бо лоиҳаи худ кушоем. Махзани маълумотро дар сутуни рости интерфейс клик кунед , " + " -ро клик кунед, то махзани моро илова кунед. Манбаи ояндаи маълумот -> PostgreSQL . Дар равзанаи поп-ап, дар майдони Корбар нақши решавӣ , ки мо қаблан офаридаем ва пароли моро ворид кунедИлова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Кисми 1 — 18Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Кисми 1 — 19123 дар майдони парол . Дар майдони Махзани маълумот мо номи базаи муштариёни худро менависем . Мо тугмаро пахш мекунем Пайвастшавӣ Санҷиши , ва агар мо дар зери он аломати сабзро бинем, ҳама чиз дар тартиб аст ва мо тугмаи OK -ро пахш мекунем . Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Кисми 1 — 20Ин аст, мо ба пойгоҳи додаҳо пайваст шудем, ҳоло биёед ба файли pom.xml равем ва вобастагӣ илова кунем. Барои кор бо базаи ORM :
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
Барои сохтани контролери REST:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
Барои serverи Tomcat:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
Барои PostgreSQL:
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.10</version>
</dependency>
Акнун, ки мо pom.xml-ро ҷудо кардем, биёед ба ҷузвдони захираҳо равем ва файли application.properties -ро ба таври зерин пур кунем:
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
Дар ин ҷо мо URL-и пойгоҳи додаи худро ворид кардем, логин ва паролро барои он пешниҳод кардем, драйверро барои PostgreSQL сабти ном кардем, нишон додем, ки мо навъи маълумоти PostgreSQL-ро истифода мебарем ва лаҳҷаро барои Hibernate муайян кардем. Минбаъд, биёед дар як ҷузвдони захираҳо директорияи наверо бо номи пойгоҳи додаҳо созем . Дар ин феҳрист мо 2 файл эҷод мекунем: initDB.sql ва populateDB.sql . Якум барои ташкor ҷадвалҳо, дуюмӣ барои пур кардани онҳо дар аввал масъул хоҳад буд. Биёед initDB.sql-ро кушоем ва сатри сабзро дар боло бубинем, ки мегӯяд, лаҳҷаи SQL танзим нашудааст . Ин маънои онро дорад, ки мо барои лоиҳаи худ лаҳҷаи SQL-ро интихоб накардаем (ва якчандтои онҳо вуҷуд доранд). Дар тарафи рости ҳамон рахи навиштаҷоти Иваз кардани лаҳҷа ба… клик кунед . Дар равзанаи поп-ап, клик кунед лаҳҷаи Project SQL , ва азбаски базаи мо PostgreSQL аст , мо лаҳҷаи ҳамон номро интихоб мекунем. OK -ро пахш кунед Биёед ба пур кардани файлҳои .sqlИлова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot.  Кисми 1 — 21 мо гузарем . Биёед аввал файли initDB.sql -ро пур кунем :
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
);
Агар пас аз пур кардани файл, баъзе калимаҳои ғайр аз мизоҷ бо ҳуруфи сафед навишта шуда бошанд, дар дохor матн бо тугмаи рости муш клик кунед ва дубора Тағйир додани лаҳҷа -> PostgreSQL -ро интихоб кунед . Тавре ки шумо аллакай фаҳмидед, ин ҳамон маълумотест, ки мо ҳангоми сохтани ҷадвали санҷишӣ дастӣ пур кардем. Дар ин ҷо онҳо дар лаҳҷаи PostgreSQL забони SQL формат карда шудаанд. Акнун биёед файли populateDB.sql -ро пур кунем :
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)');
Агар номи ҷадвали мизоҷони шумо бо ҳарфҳои сурх навишта шуда бошад, хуб аст. Гап дар сари он аст, ки мо то ҳол ин ҷадвалро эҷод накардаем ва IDEA онро ҳанӯз эътироф намекунад. Барои эҷод ва пур кардани ҷадвал, мо бояд ба файли application.properties баргардем ва дар он ҷо се сатри зеринро илова кунем:
spring.datasource.initialization-mode=ALWAYS
spring.datasource.schema=classpath*:database/initDB.sql
spring.datasource.data=classpath*:database/populateDB.sql
Дар ин сатрҳо мо мегӯем, ки мо мехоҳем базаи маълумотро ба таври барномавӣ оғоз кунем ва нишон диҳем, ки барои ин кадом файлҳо бояд истифода шаванд. Баъд, ба усули асосии замимаи мо гузаред ва онро оғоз кунед . Пас аз он, ба pgAdmin --> Серверҳо --> PostgreSQL 12 --> Пойгоҳи додаҳо --> муштариён --> Схемаҳо --> оммавӣ гузаред , тугмаи рости мушро пахш кунед " Ҷадвалҳо ", " Навсозӣ ". Агар ҳама чиз хуб бошад, пас мо ҷадвали муштариёнро мебинем, ки мо сохтаем . Пас аз он, ба файли application.properties баргардед ва сатрро шарҳ диҳед.
spring.datasource.data=classpath*:database/populateDB.sql
чунон ки дар зер:
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
Агар мо ин корро накунем, дафъаи оянда мо барномаро иҷро мекунем, хатои зеринро мегирем: org.postgresql.util.PSQLException: ХАТО: Қимати калиди такрорӣ маҳдудияти ягонаи "clients_pkey" -ро вайрон мекунад . Ин аз он сабаб рӯй медиҳад, ки мо аллакай майдонҳоро бо id 1 ва 2 дар ҷадвал пур кардаем (ҳатто ҳангоми оғози аввал). Дар ҷадвале, ки мо сохтаем, майдони id ҳамчун bigserial нишон дода шудааст , ки ба навъи Long дар Java мувофиқ аст. Аммо, дар барномаи мо навъи ин соҳа Integer аст . Ман қарор додам, ки чӣ тавр истифода бурдани Long (BIGSERIAL) -ро нишон диҳам, зеро он нисбат ба Integer диапазони калонтар дорад. Гап дар он аст, ки дар ҷадвалҳо майдони ҳамчун Калиди ибтидоӣ таъиншуда метавонад на танҳо барои нигоҳ доштани ID-и корбар , балки инчунин барои нигоҳ доштани индексҳои навъҳои гуногуни маълумот истифода шавад ва шумораи чунин сабтҳо метавонад аз арзиши максималии Integer зиёд бошад. Масалан, агар барномаи мо ҳар сония як андоза андозагирӣ кунад ва маълумотро ба ҷадвал нависад. Барои аз нав навиштани синфҳои мо барои истифодаи навъи маълумоти Long, мо бояд дар ҳама синфҳо ва усулҳое, ки майдони id-ро истифода мебаранд, навъи онро аз Integer ба Long иваз кунем . Мо ин корро намекунем, зеро барнома аслан аз ҷониби муаллиф барои навъи id Integer навишта шуда буд, яъне ин маънои онро дорад. Барои идома додан, биёед бори дигар ҷадвали муштариёнро , ки мо аз пойгоҳи додаамон сохтаем, хориҷ кунем, аммо ҳоло мо кӯшиш мекунем, ки онро ба таври барномавӣ иҷро кунем, на дастӣ. Барои ин, рамзи моро дар файли initDB.sql шарҳ диҳед ва як сатр илова кунед:
-- 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
Биёед барномаро оғоз кунем, ба pgAdmin равем , тугмаи рости мушро пахш кунед “ Ҷадвалҳо ” (дар базаи муштариёни мо ) - ->Навсозӣ ”, ва мо мебинем, ки ҷадвали мо нопадид шудааст. НБ! Ҳангоми истифодаи ин фармон эҳтиёт шавед, вагарна шумо хавфи гум кардани тамоми маълумоти дар ҷадвал мавҷудбударо доред! Биёед ба файли initDB.sql баргардем ва онро ба таври зерин аз нав нависед:
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
);
Дар ин ҷо мо навъи id- ро ба SERIAL иваз кардем , ки он ба навъи бутун , ки мо барои майдони id дар барномаи мо истифода мебарем, мувофиқат мекунад. Илова бар ин, дарозии максималии майдони телефон зиёд карда шудааст, то мо метавонем дар навиштани он фосила ва аломатҳои махсусро (қавс, тире ва ғайра) озодона истифода барем. Шумораи максималии рақамҳо дар рақами телефон ҳоло 18 рақам аст (агар хотираи ман ба ман дуруст хизмат кунад). Ман андозаро ба 50 аломат муқаррар кардам, то боварӣ ҳосил кунам. Биёед ба файли application.properties равем ва сатрро шарҳ диҳем:
spring.datasource.data=classpath*:database/populateDB.sql
Биёед барномаи худро иҷро кунем, ба pgAdmin равем, санҷед, ки ҷадвали мо сохта шудааст ва ин сатрро шарҳ диҳед.
#spring.datasource.data=classpath*:database/populateDB.sql
Ин аст, ки ман эҳтимол қисми аввали мақоларо ба итмом мерасонам. Умедворам, ки ба шумо маъқул аст, шарҳҳо нависед (ҳатто агар ин ба шумо маъқул набошад). Дар қисми дуюм, мо синфҳои худро аз нав менависем, то онҳо бо пойгоҳи додаҳои воқеӣ кор кунанд. Идома: Илова кардани пойгоҳи додаҳои PostgreSQL ба хидмати RESTful дар Spring Boot. Қисми 2 UPD Ташаккур ба модераторҳо барои ислоҳи тасвирҳо ва форматкунии матн!
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION