Ayo kula miwiti kanthi ujar manawa aku seneng banget karo seri artikel dening Elleanor Kerry sing diarani "REST REST." Iki pranala menyang artikel iki:
- Ringkesan REST. Part 1: Apa REST
- Ringkesan REST. Part 2: Komunikasi antarane klien lan server
- Ringkesan REST. Part 3: Nggawe Layanan RESTful ing Spring Boot
<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 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!
GO TO FULL VERSION