Маған Эллинор Керридің «REST шолу» деп аталатын мақалалар сериясы қатты ұнағанын айтудан бастайын . Міне, осы мақалаларға сілтемелер:
- REST туралы шолу. 1-бөлім: REST дегеніміз не
- REST туралы шолу. 2-бөлім: Клиент пен server арасындағы байланыс
- REST туралы шолу. 3-бөлім: Spring Boot бағдарламасында RESTful қызметін жасау
<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 түймесін басыңыз. .sql файлдарын толтыруға көшейік . Алдымен 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 Менің суреттерімді және мәтінді пішімдеуді түзеткені үшін модераторларға рахмет!
GO TO FULL VERSION