JavaRush /Java Blog /Random-ID /Menambahkan database PostgreSQL ke layanan RESTful di Spr...
Artur
Level 40
Tallinn

Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot. Bagian 1

Dipublikasikan di grup Random-ID
Izinkan saya memulai dengan mengatakan bahwa saya sangat menikmati rangkaian artikel Elleanor Kerry yang berjudul “Ikhtisar REST.” Berikut tautan ke artikel-artikel tersebut: Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 1Secara umum, saya memutuskan untuk mengambil kebebasan dan menambahkan sedikit ke dalamnya. Yaitu memberitahu cara membuat database dan menghubungkannya ke aplikasi ini. Di mana memulainya? Mungkin dari database itu sendiri. Saya memutuskan untuk menggunakan PostgreSQL karena saya menyukai antarmuka adminnya yang ramah pengguna. Pertama kita perlu mendownload installer PostgreSQL, contoh dari sini: Download Database PostgreSQL Saya tidak akan menjelaskan proses instalasi secara lengkap, karena ini mungkin berbeda tergantung pada OS Anda. Namun, saya perhatikan bahwa dalam prosesnya Anda harus membuat kata sandi administrator untuk peran (akun) postgres default dan memasukkannya 2 kali. Untuk mempermudah, saya menetapkan kata sandi ke 123 . Tentu saja, dalam proyek nyata perlu dibuat sesuatu yang lebih rumit. Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 2Selanjutnya, program instalasi meminta Anda untuk memilih port; Saya membiarkannya pada nilai default. Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 3Lokal juga dibiarkan sebagai default. Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 4Terinstal, lalu buka antarmuka administrator pgAdmin . Browser akan terbuka dengan jendela pop-up di mana kita akan diminta memasukkan kata sandi yang dibuat sebelumnya. Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 5Sekarang kita perlu mengatur bahasa antarmuka. Untuk melakukannya, klik Konfigurasi pgAdmin --> Lain-lain --> Bahasa Pengguna , pilih bahasa yang diinginkan --> Simpan , dan muat ulang halaman browser . Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 6Di pojok kiri atas halaman, klik Server , jendela “ Hubungkan ke server ” muncul . Masukkan kembali kata sandi kami dan centang kotak Simpan Kata Sandi agar tidak memasukkannya setiap saat. Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 7Kita bisa tetap menggunakan peran administrator untuk semua database, namun akan lebih baik jika membuat peran baru, karena kita mungkin memiliki banyak database dan banyak program yang menggunakannya. Untuk melakukannya, di pojok kiri atas, klik PostgreSQL 12 --> RMB pada Login/Peran Grup --> Buat --> Login/Peran Grup Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 8 Di jendela pop-up, pada tab “ Umum ”, masukkan nama peran. Saya menamai peran tersebut root . Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 9Pada tab “ Definisi ” kita buat password baru, saya sisakan 123 saja agar tidak bingung. Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 10Buka tab “ Hak ” dan tandai semua item yang diperlukan. Saya telah menetapkan semua item ke " YA ". Klik “ SimpanMenambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 11Kami melanjutkan untuk membuat database. Klik kanan pada “Databases” --> Create --> Database Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 12 Pada tab “ General ”, buat nama database. Misalnya saja pelanggan . Kami menugaskan pemilik ke root , yang kami buat pada langkah sebelumnya. Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 13pada "Definisi » periksa apakah kita telah menetapkan pengkodean UTF8 . Klik “ Simpan ”. Itu saja, database kita telah dibuat (untuk saat ini kosong). Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 14Pada titik ini kita dapat mengakhiri dengan pgAdmin, karena... Kami akan membuat tabel secara terprogram, tetapi untuk berjaga-jaga, saya akan menunjukkan cara membuat tabel secara manual. Perluas pelanggan --> Skema --> pohon publik . Klik kanan Tabel --> Buat --> Tabel . Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 15Jendela pop-up akan terbuka. Pada tab “ General ”, kita memberikan nama pada tabel kita, misalnya test_table , dan menetapkan root sebagai owner . Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 16Buka tab “ Kolom ”, klik “ + ” untuk membuat kolom baru. Masukkan nama “ id ” dan tipe data bigserial , yang setara dengan tipe Long di Java, tetapi dengan kenaikan otomatis (saat menambahkan record baru, id akan otomatis bertambah satu). Kami menandai non-NULL sebagai “ Yes ”, kunci utama juga “ Yes ”. Kami membuat kolom “ nama ”, “ email ” dan “ teleponMenambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 17 ” dengan cara yang sama . Kami memilih tipe data karakter yang bervariasi , ini sesuai dengan tipe String , tetapi memungkinkan Anda untuk mengatur panjang maksimum. Panjang nama maksimal kita atur menjadi 200 karakter untuk mengisi nama lengkap. dalam satu kolom. Kami menetapkan panjang email maksimum menjadi 254 karakter. Mengapa email memiliki panjang maksimum dapat ditemukan di sini . Untuk nomor telepon, pilih 20 karakter, ini sudah cukup. Sedikit tentang nomor telepon: Kesalahpahaman programmer tentang nomor telepon (Habr) Kami menandai non-NULL di semua kolom sebagai “ Ya ” jika kami ingin data ini wajib. Klik “ Simpan ”. Itu saja, tabel sudah dibuat. Untuk menghapus tabel pengujian kami, klik kanan padanya (di pohon) dan “ hapus ”, karena Kita tidak membutuhkannya lagi, karena kita akan membuat tabel dari program kita. Tutup pgAdmin dan buka program kami. Mari buka IDEA dengan proyek kita. Klik Database di kolom kanan antarmuka, klik “ + ” untuk menambahkan database kami. Sumber Data Berikutnya --> PostgreSQL . Di jendela pop-up, masukkan peran root yang kita buat sebelumnya di kolom Pengguna , dan kata sandi kitaMenambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 18Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 19123 di bidang kata sandi . Pada kolom Database kita tuliskan nama database pelanggan kita . Kami menekan tombol Uji Koneksi , dan jika kami melihat tanda centang hijau di bawahnya, maka semuanya beres, dan kami menekan tombol OK . Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 20Itu saja, kita sudah terhubung ke database, sekarang mari kita pergi ke file pom.xml dan menambahkan dependensi. Untuk bekerja dengan basis data ORM :
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
Untuk membuat pengontrol REST:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
Untuk server Tomcat:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
Untuk PostgreSQL:
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.10</version>
</dependency>
Sekarang kita sudah memilah pom.xml, mari masuk ke folder resources dan isi file application.properties sebagai berikut:
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
Di sini kami memasukkan URL database kami, memberikan login dan kata sandinya, mendaftarkan driver untuk PostgreSQL, menunjukkan bahwa kami akan menggunakan tipe data PostgreSQL, dan menentukan dialek untuk Hibernate. Selanjutnya, mari buat direktori baru bernama database di folder sumber daya yang sama . Di direktori ini kita akan membuat 2 file: initDB.sql dan populateDB.sql . Yang pertama akan bertanggung jawab untuk membuat tabel, yang kedua akan bertanggung jawab untuk mengisinya terlebih dahulu. Mari kita buka initDB.sql dan lihat bilah hijau di bagian atas yang bertuliskan dialek SQL tidak dikonfigurasi . Ini berarti kami belum memilih dialek SQL untuk proyek kami (dan ada beberapa di antaranya). Klik di sisi kanan strip yang sama pada tulisan Ubah dialek menjadi… . Di jendela pop-up, klik Project SQL Dialect , dan karena database kami adalah PostgreSQL , kami memilih dialek dengan nama yang sama. Klik OK Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot.  Bagian 1 - 21 Mari kita lanjutkan ke pengisian file .sql kita . Mari kita isi terlebih dahulu file 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
);
Jika setelah mengisi file, beberapa kata selain klien ditulis dengan font putih, lalu klik kanan di dalam teks dan pilih Ubah Dialek --> PostgreSQL lagi . Seperti yang mungkin sudah Anda pahami, ini adalah data yang sama yang kami isi saat membuat tabel pengujian secara manual. Di sini mereka diformat dalam dialek PostgreSQL dari bahasa SQL. Sekarang mari kita isi 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)');
Jika nama tabel klien Anda ditulis dengan huruf merah, maka tidak apa-apa. Intinya kita belum membuat tabel ini, dan IDEA belum mengenalinya. Untuk membuat dan mengisi tabel, kita perlu kembali ke file application.properties dan menambahkan tiga baris berikut di sana:
spring.datasource.initialization-mode=ALWAYS
spring.datasource.schema=classpath*:database/initDB.sql
spring.datasource.data=classpath*:database/populateDB.sql
Pada baris ini kita mengatakan bahwa kita ingin menginisialisasi database secara terprogram dan menunjukkan file mana yang perlu digunakan untuk ini. Selanjutnya, buka metode utama aplikasi kita dan luncurkan . Setelah itu, buka pgAdmin --> Servers --> PostgreSQL 12 --> Databases --> Customer --> Schemas --> public , klik kanan pada " Tables ", " Update ". Jika semuanya berjalan dengan baik, maka kita melihat tabel klien yang kita buat . Setelah itu, kembali ke file application.properties dan beri komentar pada baris tersebut.
spring.datasource.data=classpath*:database/populateDB.sql
seperti di bawah ini:
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
Jika kita tidak melakukan ini, maka saat kita menjalankan program lagi, kita akan menerima kesalahan berikut: org.postgresql.util.PSQLException: ERROR: A duplikat key value melanggar batasan unik "clients_pkey" . Hal ini terjadi karena kita telah mengisi kolom dengan id 1 dan 2 pada tabel (bahkan pada peluncuran pertama). Dalam tabel yang kita buat, bidang id ditentukan sebagai bigserial , yang sesuai dengan tipe Long di Java. Namun, dalam program kami, tipe bidang ini adalah Integer . Saya memutuskan untuk menunjukkan cara menggunakan Long (BIGSERIAL) karena jangkauannya lebih besar daripada Integer. Faktanya adalah bahwa dalam tabel, bidang yang ditetapkan sebagai Kunci Utama dapat digunakan tidak hanya untuk menyimpan id pengguna , tetapi juga untuk menyimpan indeks berbagai macam data, dan jumlah catatan tersebut dapat melebihi nilai Integer maksimum. Misalnya, jika program kita melakukan beberapa pengukuran setiap detik dan menulis datanya ke dalam tabel. Untuk menulis ulang kelas kita agar menggunakan tipe data Long, kita perlu mengubah tipe dari Integer menjadi Long di semua kelas dan metode yang menggunakan bidang id . Kami tidak akan melakukan ini karena program ini awalnya ditulis oleh penulis untuk tipe id Integer, yang berarti ini masuk akal. Untuk melanjutkan, mari kita hapus sekali lagi tabel klien yang kita buat dari database, namun sekarang kita akan mencoba melakukannya secara terprogram, bukan secara manual. Untuk melakukan ini, beri komentar pada kode kami di file initDB.sql dan tambahkan satu 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
Mari kita luncurkan programnya, buka pgAdmin , klik kanan pada “ Tabel ” (di database pelanggan kami ) - ->Perbarui ”, dan kita akan melihat bahwa tabel kita telah hilang. Catatan! Berhati-hatilah saat menggunakan perintah ini, jika tidak, Anda berisiko kehilangan semua data yang ada di tabel Anda! Mari kita kembali ke file initDB.sql dan menulis ulang sebagai berikut:
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
);
Di sini kita telah mengubah tipe id menjadi SERIAL , yang cocok dengan tipe Integer yang kita gunakan untuk bidang id di program kita. Selain itu, panjang maksimum bidang telepon telah ditambah sehingga kita dapat leluasa menggunakan spasi dan karakter khusus (tanda kurung, tanda hubung, dll) dalam penulisannya. Jumlah maksimum digit dalam nomor telepon saat ini adalah 18 digit (jika ingatan saya benar). Saya mengatur ukurannya menjadi 50 karakter untuk memastikan. Mari buka file application.properties dan hapus komentar pada baris:
spring.datasource.data=classpath*:database/populateDB.sql
Mari kita jalankan program kita, buka pgAdmin, periksa apakah tabel kita telah dibuat, dan beri komentar kembali pada baris ini.
#spring.datasource.data=classpath*:database/populateDB.sql
Di sinilah saya mungkin akan menyelesaikan bagian pertama artikel ini. Saya harap Anda menyukainya, tulis komentar (meskipun Anda tidak menyukainya). Di bagian kedua, kita akan menulis ulang kelas kita sehingga bisa bekerja dengan database nyata. Lanjutan: Menambahkan database PostgreSQL ke layanan RESTful di Spring Boot. Bagian 2 UPD Terima kasih kepada moderator yang telah mengoreksi format gambar dan teks saya!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION