JavaRush /Java блогы /Random-KK /Spring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқ...
Artur
Деңгей
Tallinn

Spring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу. 1 бөлім

Топта жарияланған
Маған Эллинор Керридің «REST шолу» деп аталатын мақалалар сериясы қатты ұнағанын айтудан бастайын . Міне, осы мақалаларға сілтемелер: Spring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1 - 1 бөлімЖалпы, мен бостандықты алып, оларға аздап қосуды шештім. Атап айтқанда, мәліметтер базасын құру және оны осы қолданбаға қосу жолын айтыңыз. Неден бастау керек? Дерекқордың өзінен шығар. Мен PostgreSQL-ті пайдалануды шештім , себебі оның пайдаланушыға ыңғайлы әкімші интерфейсі ұнады. Алдымен PostgreSQL орнатушысын жүктеп алуымыз керек, мысалы, мына жерден: PostgreSQL дерекқорын жүктеп алу Мен толық орнату процесін сипаттамаймын, себебі ол сіздің операциялық жүйеңізге байланысты әр түрлі болуы мүмкін. Дегенмен, бұл процесте әдепкі postgres рөлі (тіркелгі) үшін әкімші құпия сөзін ойлап тауып , оны 2 рет енгізу қажет болатынын ескертемін. Қарапайымдылық үшін құпия сөзді 123 деп қойдым . Әрине, нақты жобаларда күрделірек нәрсе ойлап табу керек. Spring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1-2 бөлімСодан кейін орнату бағдарламасы портты таңдауды ұсынады; мен оны әдепкі мәнінде қалдырдым. Spring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1 - 3 бөлімЖергілікті тіл де әдепкі ретінде қалдырылды. Орнатылған, содан кейін pgAdminSpring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1-4 бөлім әкімші интерфейсін ашыңыз . Браузер қалқымалы тереземен ашылады, онда бізден бұрын жасалған құпия сөзді енгізу сұралады. Енді біз интерфейс тілін орнатуымыз керек. Ол үшін pgAdmin конфигурациялау --> Әртүрлі --> Пайдаланушы тілі тармағын таңдап , қажетті тілді таңдаңыз --> Сақтау және шолғыш бетін қайта жүктеңіз . Беттің жоғарғы сол жақ бұрышында Сервер түймесін басыңыз, « Серверге қосылу » терезесі пайда болады . Құпия сөзді қайта енгізіп, оны әр уақытта енгізбеу үшін Құпия сөзді сақтау құсбелгісін қойыңыз . Біз барлық дерекқорлар үшін әкімші рөлін пайдалануды жалғастыра аламыз, бірақ жаңа рөл жасаған дұрыс, өйткені бізде көптеген дерекқорлар және оларды пайдаланатын көптеген бағдарламалар болуы мүмкін. Мұны істеу үшін жоғарғы сол жақ бұрышта PostgreSQL 12 --> Жүйеге кіру/топтық рөлдерде RMB --> Жасау --> Кіру/топтық рөл түймесін басыңыз Қалқымалы терезеде « Жалпы » қойындысында рөлдің аты. Мен рөлдің түбірін атадым . « Анықтама » қойындысында біз жаңа құпия сөз жасаймыз, мен шатастырмау үшін 123 қалдырдым. « Құқықтар » қойындысына өтіп , барлық қажетті элементтерді белгілеңіз. Мен барлық элементтерді « ИӘ » күйіне қойдым . « Сақтау » түймесін басыңыз. Біз дерекқорды құруға кірісеміз. «Дерекқорлар» --> Жасау --> Дерекқорды тінтуірдің оң жақ түймешігімен басыңыз « Жалпы » қойындысында дерекқордың атын жасаңыз. Бұл, мысалы, тұтынушылар болсын . Біз алдыңғы қадамда жасаған root иесін тағайындаймыз . Үстінде »Spring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1 - 5 бөлімSpring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1-6 бөлімSpring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1-7 бөлім Spring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1-8 бөлімSpring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1 - 9 бөлімSpring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1-10 бөлімSpring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1-11 бөлім Spring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1-12 бөлімSpring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1-13 бөлімАнықтама » бізде UTF8 codeтау жинағы бар екенін тексеріңіз . « Сақтау » түймесін басыңыз. Міне, біздің дерекқорымыз жасалды (әзірше бос). Spring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1-14 бөлімОсы кезде біз pgAdmin-мен аяқтай аламыз, себебі... Біз кестелерді бағдарламалы түрде жасаймыз, бірақ, мен сізге кестені қолмен құру жолын көрсетемін. Тұтынушыларды кеңейтіңіз --> Схемалар --> жалпы ағаш . Кестелер --> Жасау --> Кесте тармағын тінтуірдің оң жақ түймешігімен басыңыз . Spring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1 - 15 бөлімҚалқымалы терезе ашылады. « Жалпы » қойындысында біз кестемізге атау береміз, мысалы, test_table , және түбірді иесі ретінде тағайындаймыз . Spring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1-16 бөлім« Бағандар » қойындысына өтіп, жаңа баған жасау үшін « + » түймесін басыңыз . Java тіліндегі Long түріне баламалы , бірақ автоматты өсіммен (жаңа жазбаны қосқанда идентификатор автоматты түрде біреуге артады) “ id ” атауын және bigserial деректер түрін енгізіңіз. NULL емес « Иә » деп белгілейміз, негізгі кілт де « Иә ». Біз « аты », « электрондық пошта » және « телефон » бағандарын дәл осылай жасаймыз . Деректер түрінің таңбасын таңдаймыз өзгеретін , бұл Жол түріне сәйкес келеді , бірақ максималды ұзындықты орнатуға мүмкіндік береді. Толық атауды толтыру үшін атау ұзындығын 200 таңбаға орнаттық . бір бағанда. Біз электрондық поштаның максималды ұзындығын 254 таңбаға орнаттық . Неліктен электрондық поштаның максималды ұзындығы бар екенін мына жерден табуға болады . Телефон нөмірі үшін 20 таңбаны таңдаңыз, бұл жеткілікті болуы керек. Телефон нөмірлері туралы аздап: Бағдарламалаушылардың телефон нөмірлері туралы қате түсініктері (Habr) Егер бұл деректер міндетті болуын қаласақ, барлық бағандарда NULL емес дегенді « Иә » деп белгілейміз. « Сақтау » түймесін басыңыз. Міне, кесте жасалды. Сынақ кестемізді жою үшін оны тінтуірдің оң жақ түймешігімен нұқыңыз (ағашта) және « жою », өйткені Бұл бізге енді қажет емес, өйткені біз кестелерді бағдарламамыздан жасаймыз. pgAdmin жабыңыз және біздің бағдарламаға өтіңіз. IDEA-ны өз жобамызбен ашайық. Интерфейстің оң жақ бағанындағы Дерекқор түймесін басыңыз , дерекқорды қосу үшін « + » түймесін басыңыз. Келесі деректер көзі -> PostgreSQL . Қалқымалы терезеде Пайдаланушы өрісіне біз бұрын жасаған түбірлік рөлді және құпия сөзді енгізіңізSpring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1-17 бөлімSpring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1-18 бөлімSpring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  1 - 19 бөлім123 құпия сөз өрісінде . Деректер базасы өрісінде біз тұтынушыларымыздың деректер базасының атын жазамыз . Біз түймені басамыз Қосылымды тексеру , және оның астында жасыл құсбелгіні көрсек, онда бәрі тәртіппен және біз түймесін басамыз OK . Spring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  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>
Tomcat serverі үшін:
<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 деректер түрін қолданатынымызды көрсеттік және күту режимі үшін диалекті көрсеттік. Әрі қарай, сол ресурстар қалтасында дерекқор деп аталатын жаңа каталог жасайық . Бұл каталогта біз 2 файл жасаймыз: initDB.sql және populateDB.sql . Біріншісі кестелерді құруға жауапты болады, екіншісі оларды бастапқыда толтыруға жауапты болады. initDB.sql ашайық және жоғарғы жағында SQL диалектісі конфигурацияланбағанын көрсететін жасыл жолақты көрейік . Бұл біздің жобамыз үшін SQL диалектісін таңдамағанымызды білдіреді (және олардың бірнешеуі бар). Диалекті өзгерту ... жазуындағы сол жолақтың оң жағындағы түймесін басыңыз . Қалқымалы терезеде Project SQL диалектісі түймесін басыңыз және біздің дерекқорымыз PostgreSQL болғандықтан , біз аттас диалектіні таңдаймыз. OK түймесін басыңыз. .sqlSpring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу.  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
);
Егер файлды толтырғаннан кейін клиенттерден басқа кейбір сөздер ақ шрифтпен жазылса, мәтінді тінтуірдің оң жақ түймешігімен басып, Диалекті өзгерту -> PostgreSQL тармағын қайтадан таңдаңыз . Сіз әлдеқашан түсінген боларсыз, бұл сынақ кестесін қолмен жасау кезінде біз толтырған деректер. Мұнда олар SQL тілінің PostgreSQL диалектісінде пішімделген. Енді 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" бірегей шектеуін бұзады . Бұл кестеде 1 және 2 идентификаторы бар өрістерді толтырғандықтан болады (тіпті бірінші іске қосу кезінде де). Біз жасаған кестеде id өрісі Java тіліндегі Long түріне сәйкес келетін bigserial ретінде көрсетілген . Дегенмен, біздің бағдарламамызда бұл өрістің түрі Integer болып табылады . Мен Long (BIGSERIAL) пайдалану жолын көрсетуді жөн көрдім, себебі оның ауқымы бүтін санға қарағанда үлкенірек. Кестелерде Бастапқы кілт ретінде тағайындалған өрісті пайдаланушы идентификаторларын сақтау үшін ғана емес , сонымен қатар көптеген деректердің индекстерін сақтау үшін де пайдалануға болады және мұндай жазбалардың саны бүтін санның максималды мәнінен асып кетуі мүмкін. Мысалы, егер біздің бағдарлама секунд сайын кейбір өлшемдерді алып, деректерді кестеге жазатын болса. Ұзын деректер түрін пайдалану үшін сыныптарымызды қайта жазу үшін біз id өрісін пайдаланатын барлық сыныптар мен әдістерде түрді Integer түрінен Longға өзгертуіміз керек . Біз мұны істемейміз, себебі бағдарламаны бастапқыда автор id Integer түріне жазған, яғни бұл белгілі бір мағынаға ие. Жалғастыру үшін дерекқорымыздан жасаған клиенттер кестесін тағы бір рет алып тастаймыз , бірақ енді оны қолмен емес, бағдарламалық түрде жасауға тырысамыз. Ол үшін initDB.sql файлындағы codeымызды түсіндіріңіз және бір жолды қосыңыз:
-- 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 тармағына өтіңіз , « Кестелер » (біздің тұтынушылардың дерекқорында ) - -> « Жаңарту » түймесін тінтуірдің оң жақ түймешігімен нұқыңыз, сонда біз кестенің жоғалғанын көреміз. NB! Бұл пәрменді пайдалану кезінде абай болыңыз, әйтпесе кестеңіздегі барлық деректерді жоғалту қаупі бар! 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 түріне өзгерттік , ол бағдарламамыздағы идентификатор өрісі үшін пайдаланып жатқан бүтін сан түріне сәйкес келеді. Сонымен қатар, телефон өрісінің максималды ұзындығы оны жазуда бос орындар мен арнайы таңбаларды (жақшалар, сызықшалар және т.б.) еркін пайдалана алатындай етіп ұлғайтылды. Телефон нөміріндегі цифрлардың максималды саны қазіргі уақытта 18 санды құрайды (егер жад маған дұрыс қызмет етсе). Мен сенімді болу үшін өлшемді 50 таңбаға қойдым. application.properties файлына өтіп, жолды алып тастаймыз:
spring.datasource.data=classpath*:database/populateDB.sql
Бағдарламамызды іске қосып, pgAdmin-ге өтіп, кестеміздің жасалғанын тексеріп, осы жолға түсініктеме беріңіз.
#spring.datasource.data=classpath*:database/populateDB.sql
Бұл жерде мен мақаланың бірінші бөлігін аяқтайтын шығармын. Сізге ұнайды деп үміттенемін, пікір жазыңыз (ұнамаса да). Екінші бөлімде біз сабақтарымызды нақты дерекқорлармен жұмыс істей алатындай етіп қайта жазамыз. Жалғасы: Spring Boot жүйесінде RESTful қызметіне PostgreSQL дерекқорын қосу. 2-бөлім UPD Менің суреттерімді және мәтінді пішімдеуді түзеткені үшін модераторларға рахмет!
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION