JavaRush /Blog Jawa /Random-JV /Nambahake database PostgreSQL menyang layanan RESTful ing...
Artur
tingkat
Tallinn

Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot. Bagean 1

Diterbitake ing grup
Ayo kula miwiti kanthi ujar manawa aku seneng banget karo seri artikel dening Elleanor Kerry sing diarani "REST REST." Iki pranala menyang artikel iki: Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 1Umumé, aku mutusaké kanggo njupuk kamardikan lan nambah sethitik kanggo wong-wong mau. Yaiku, critakna carane nggawe database lan nyambungake menyang aplikasi iki. Where kanggo miwiti? Mbokmenawa saka database dhewe. Aku mutusake nggunakake PostgreSQL amarga aku seneng antarmuka admin sing ramah pangguna. Pisanan, kita kudu ngundhuh installer PostgreSQL, contone saka kene: Download Database PostgreSQL Aku ora bakal njlèntrèhaké proses instalasi lengkap, amarga bisa uga beda-beda gumantung saka OS sampeyan. Nanging, aku nyathet yen ing proses kasebut sampeyan kudu nggawe sandhi administrator kanggo peran postgres standar (akun) lan ketik kaping 2. Kanggo gamblang, aku nyetel sandi kanggo 123 . Mesthi, ing proyèk nyata iku perlu kanggo nggawe soko luwih rumit. Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 2Sabanjure, program instalasi njaluk sampeyan milih port; Aku ninggalake ing nilai standar. Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 3Lokal uga ditinggalake minangka standar. Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 4Diinstal, banjur bukak antarmuka administrator pgAdmin . Browser bakal mbukak kanthi jendela pop-up ing ngendi kita bakal dijaluk ngetik sandhi sing wis digawe sadurunge. Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 5Saiki kita kudu nyetel basa antarmuka. Kanggo nindakake iki, klik Configure pgAdmin --> Miscellaneous --> User Language , pilih basa sing dikarepake --> Save , lan muat ulang kaca browser . Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 6Ing pojok kiwa ndhuwur kaca, klik Server , jendhela " Sambung menyang server " katon . Ketik sandhi maneh lan centhang kothak Simpen Sandi supaya ora nglebokake saben wektu. Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 7Kita bisa terus nggunakake peran administrator kanggo kabeh database, nanging bakal luwih apik kanggo nggawe peran anyar, amarga kita bisa duwe akeh database lan akeh program sing nggunakake. Kanggo nindakake iki, ing pojok kiwa ndhuwur, klik PostgreSQL 12 -> RMB on Login/Group Roles -> Create -> Login/Group Role Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 8 Ing jendela pop-up, ing tab " Umum ", ketik jeneng peran. Aku jenenge root peran . Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 9Ing tab " Definition " kita nggawe tembung sandhi anyar, aku ninggalake 123 supaya ora bingung. Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 10Pindhah menyang tab " Hak " lan tandhani kabeh item sing dibutuhake. Aku wis nyetel kabeh item menyang " YA ". Klik " Simpen " Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 11Kita nerusake nggawe database. Klik-tengen ing "Databases" -> Create -> Database Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 12 Ing tab " General ", gawe jeneng database. Ayo dadi, contone, pelanggan . We nemtokake pemilik kanggo ROOT , sing digawe ing langkah sadurunge. Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 13Ing "Definisi » priksa manawa kita duwe set enkoding UTF8 . Klik " Simpen ". Mekaten, database kita wis digawe (kosong kanggo saiki). Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 14Ing titik iki kita bisa mungkasi karo pgAdmin, amarga ... Kita bakal nggawe tabel kanthi program, nanging, yen ngono, aku bakal nuduhake sampeyan carane nggawe tabel kanthi manual. Expand customer --> Schemas --> public tree . Klik kanan Tables -> Create -> Table . Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 15Jendhela pop-up bakal mbukak. Ing tab " Umum ", kita nemtokake jeneng menyang meja, contone test_table , lan nemtokake root minangka pemilik . Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 16Pindhah menyang tab " Kolom ", klik " + " kanggo nggawe kolom anyar. Ketik jeneng " id " lan jinis data bigserial , sing padha karo jinis Long ing Jawa, nanging kanthi otomatis nambah (nalika nambah rekaman anyar, id bakal kanthi otomatis nambah siji). Kita menehi tandha non-NULL minangka " Ya ", kunci utama uga " Ya ". Kita nggawe kolom " jeneng ", " email " lan " telponNambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 17 " kanthi cara sing padha . Kita milih karakter jinis data sing beda-beda , iki cocog karo jinis String , nanging ngidini sampeyan nyetel dawa maksimal. Kita nyetel dawa jeneng maksimum kanggo 200 karakter kanggo ngisi jeneng lengkap. ing siji kolom. Kita nyetel dawa email maksimum kanggo 254 karakter. Apa email wis kuwi dawa maksimum bisa ditemokaké kene . Kanggo nomer telpon, pilih 20 karakter, iki kudu cukup. A little bab nomer telpon: Misconceptions programer babagan nomer telpon (Habr) Kita menehi tandha non-NULL ing kabeh kolom minangka " Ya " yen kita pengin data iki dadi prentah. Klik " Simpen ". Wis, meja wis digawe. Kanggo mbusak tabel test kita, klik-tengen ing (ing wit) lan " mbusak ", amarga Kita ora perlu maneh, amarga kita bakal nggawe tabel saka program kita. Nutup pgAdmin lan pindhah menyang program kita. Ayo mbukak IDEA karo proyek kita. Klik Database ing kolom tengen antarmuka, klik " + " kanggo nambah database kita. Sumber Data Sabanjure --> PostgreSQL . Ing jendela pop-up, ketik ing lapangan Panganggo peran root sing digawe sadurunge, lan sandhiNambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 18Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 19123 ing kolom sandhi . Ing lapangan Database kita nulis jeneng database pelanggan kita . Kita menet tombol Tes Sambungan , lan yen kita ndeleng tandha centhang ijo ing ngisor iki, kabeh wis rapi, lan kita pencet tombol OK . Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 20Mekaten, kita wis nyambung menyang database, saiki ayo menyang file pom.xml lan nambah dependensi. Kanggo nggarap database ORM :
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
Kanggo nggawe pengontrol REST:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
Kanggo server Tomcat:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
Kanggo PostgreSQL:
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.10</version>
</dependency>
Saiki kita wis ngurutake pom.xml, ayo pindhah menyang folder sumber daya lan isi file application.properties kaya ing ngisor iki:
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
Ing kene kita ngetik URL database kita, nyedhiyakake login lan sandhi kasebut, ndhaptar driver kanggo PostgreSQL, nuduhake yen kita bakal nggunakake jinis data PostgreSQL, lan nemtokake dialek kanggo Hibernate. Sabanjure, ayo nggawe direktori anyar sing diarani database ing folder sumber daya sing padha . Ing direktori iki kita bakal nggawe 2 file: initDB.sql lan populateDB.sql . Pisanan bakal tanggung jawab kanggo nggawe tabel, kaloro bakal tanggung jawab kanggo ngisi ing wiwitan. Ayo mbukak initDB.sql lan ndeleng garis ijo ing sisih ndhuwur sing nyatakake dialek SQL ora dikonfigurasi . Iki tegese kita durung milih dialek SQL kanggo proyek kita (lan ana sawetara). Klik ing sisih tengen strip sing padha ing prasasti Ganti dialek dadi… . Ing jendhela pop-up, klik Project SQL Dialect , lan wiwit database kita PostgreSQL , kita milih dialek kanthi jeneng sing padha. Klik OK Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot.  Bagean 1 - 21 Ayo pindhah menyang ngisi file .sql kita . Ayo ngisi file initDB.sql dhisik :
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
);
Yen, sawise ngisi file kasebut, sawetara tembung liyane saka klien ditulis nganggo font putih, banjur klik-tengen ing teks banjur pilih Ganti Dialek -> PostgreSQL maneh . Kaya sing wis dingerteni, iki minangka data sing padha sing diisi nalika nggawe tabel tes kanthi manual. Ing kene padha diformat ing dialek PostgreSQL saka basa SQL. Saiki ayo ngisi file 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)');
Yen jeneng meja klien sampeyan ditulis nganggo huruf abang, ora apa-apa. Intine kita durung nggawe tabel iki, lan IDEA durung ngerti. Kanggo nggawe lan ngisi tabel, kita kudu bali menyang file application.properties lan nambah telung baris ing ngisor iki:
spring.datasource.initialization-mode=ALWAYS
spring.datasource.schema=classpath*:database/initDB.sql
spring.datasource.data=classpath*:database/populateDB.sql
Ing baris iki kita ngomong yen kita pengin initialize database programmatically lan nunjukaké kang file kudu digunakake kanggo iki. Sabanjure, pindhah menyang cara utama aplikasi kita lan bukak . Sawise iku, pindhah menyang pgAdmin -> Server -> PostgreSQL 12 -> Database -> pelanggan -> Skema -> publik , klik-tengen ing " Tabel ", " Update ". Yen kabeh mlaku kanthi becik, mula kita ndeleng tabel klien sing digawe . Sawisé iku, bali menyang application.properties file lan komentar metu baris.
spring.datasource.data=classpath*:database/populateDB.sql
kaya ing ngisor iki:
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
Yen kita ora nindakake iki, banjur ing wektu sabanjuré kita mbukak program kita bakal nampa kesalahan ing ngisor iki: org.postgresql.util.PSQLException: ERROR: Nilai kunci duplikat nerak alangan unik "clients_pkey" . Iki kedadeyan amarga kita wis ngisi kolom kanthi id 1 lan 2 ing tabel (sanajan nalika diluncurake pisanan). Ing tabel sing digawe, kolom id ditemtokake minangka bigserial , sing cocog karo jinis Long ing Jawa. Nanging, ing program kita jinis kanggo lapangan iki Integer . Aku mutusaké kanggo nuduhake carane nggunakake Long (BIGSERIAL) amarga wis sawetara luwih gedhe saka Integer. Kasunyatane, ing tabel, lapangan sing ditunjuk minangka Kunci Utama bisa digunakake ora mung kanggo nyimpen id pangguna , nanging uga kanggo nyimpen indeks saka macem-macem data, lan jumlah rekaman kasebut bisa ngluwihi nilai Integer maksimum. Contone, yen program kita njupuk sawetara pangukuran saben detik lan nulis data ing meja. Kanggo nulis ulang kelas kanggo nggunakake jinis data Long, kita kudu ngganti jinis saka Integer kanggo Long ing kabeh kelas lan cara sing nggunakake kolom id . Kita ora bakal nindakake iki, amarga program kasebut asline ditulis dening penulis kanggo jinis Integer id , sing tegese iki nggawe pangertèn. Kanggo nerusake, ayo mbusak maneh tabel klien sing digawe saka database, nanging saiki kita bakal nyoba nindakake kanthi program tinimbang manual. Kanggo nindakake iki, komentar kode kita ing file initDB.sql lan tambahake siji baris:
-- 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
Ayo miwiti program, pindhah menyang pgAdmin , klik-tengen ing " Tabel " (ing database pelanggan kita ) - -> " Update ", lan kita bakal weruh yen tabel kita wis ilang. NB! Ati-ati nalika nggunakake printah iki, yen ora, sampeyan resiko ilang kabeh data sing wis ing meja! Ayo bali menyang file initDB.sql lan tulis maneh kaya ing ngisor iki:
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
);
Ing kene kita wis ngganti jinis id dadi SERIAL , sing cocog karo jinis Integer sing digunakake kanggo kolom id ing program kita. Kajaba iku, dawa maksimum lapangan telpon wis tambah supaya kita bisa bebas nggunakake spasi lan karakter khusus (kurung, garis, etc.) ing nulis. Jumlah maksimum digit ing nomer telpon saiki 18 digit (yen memori sandi serves kula bener). Aku nyetel ukuran kanggo 50 karakter kanggo mesthekake. Ayo menyang file application.properties lan mbusak komentar ing baris kasebut:
spring.datasource.data=classpath*:database/populateDB.sql
Ayo mbukak program kita, pindhah menyang pgAdmin, priksa manawa tabel kita wis digawe, lan komentar maneh baris iki.
#spring.datasource.data=classpath*:database/populateDB.sql
Iki ngendi aku bakal ngrampungake bagean pisanan saka artikel. Muga-muga sampeyan seneng, tulis komentar (sanajan sampeyan ora seneng). Ing bagean loro, kita bakal nulis ulang kelas supaya bisa nggarap database nyata. Terusake: Nambahake database PostgreSQL menyang layanan RESTful ing Spring Boot. Part 2 UPD Matur nuwun kanggo moderator kanggo mbenerake gambar lan format teks!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION