Artikel daripada siri tentang mencipta projek Java (pautan ke bahan lain ada di penghujung). Matlamatnya adalah untuk menganalisis teknologi utama, hasilnya menulis bot telegram. Dalam bahagian ini, kami cuba melancarkan SpringBoot dan Flyway. Jumlah minimum teori, seperti yang anda suka))) Kami meninggalkan perbandingan terakhir Flyway/Liquibase untuk tempoh masa yang tidak ditentukan dan sampai ke intipati. Dan walaupun begitu ia telah pun berlarutan. Untuk tidak menerangkan Flyway dua kali, saya memutuskan untuk segera menambahkannya pada projek JRTB kami yang akan datang.
berbilang segi, berbilang modular:
Apa yang perlu kita lakukan sebagai sebahagian daripada ini?
- Lancarkan aplikasi SpringBoot berdasarkan Maven.
- Tambah Flyway di sana: nasib baik, ia mudah disepadukan.
- Tambah skema untuk jadual yang kami ada dalam pangkalan data contoh.
Apa itu flyway
Untuk menggunakan sesuatu, anda perlu mengetahui terlebih dahulu apa itu dan mengapa. Flyway ialah alat kawalan versi pangkalan data. Kata-kata itu sudah diketahui umum, tetapi entah bagaimana pemahamannya belum ditambah, bukan? Mari cuba huraikan masalah yang diselesaikan oleh flyway. Katakan kita ada projek. Seperti segala-galanya di dunia kita, ia tidak sempurna, jadi tidak mungkin untuk merancang dan merangka versi akhir projek itu. Setiap kali nuansa tertentu yang tidak diketahui muncul. Projek ini menggunakan pangkalan data dalam kerjanya. Sudah tentu, jika projek berubah, struktur pangkalan data juga mungkin berubah. Katakan kami menambah medan baharu untuk salah satu entiti dalam projek kami. Bagaimana hendak melakukannya?- Tambahkan medan ini pada entiti kami, kemas kini segala-galanya supaya logik perniagaan berfungsi.
- Kemas kini pangkalan data. Satu-satunya cara yang mungkin ialah melakukannya secara manual. Untuk melakukan ini, anda perlu masuk dan mendaftarkan skrip sql yang diperlukan.
- Tetapi jika kita mempunyai lebih daripada satu tempat di mana kita menggunakan projek kita, maka adakah ini perlu dilakukan di setiap daripada mereka?
- dan jika kita ingin kembali, bagaimana kita tahu dengan tepat keadaan struktur pangkalan data sekarang?
- Bagaimanakah kita akan memastikan bahawa perubahan pangkalan data berjaya?
- Bagaimanakah saya boleh mendapat peluang untuk menjejaki semua perubahan pangkalan data yang berlaku pada projek?
Lancarkan SpringBoot + Flyway
Apa itu Spring Boot
Apakah yang kami lancarkan?... Untuk memahami apa dan mengapa kami lakukan, anda perlu memutuskan apa itu SpringBoot. Mula-mula, mari cepat (baik, sangat cepat) bercakap tentang Spring . Pada masa ini, ia adalah standard industri de facto dalam membangunkan aplikasi pelayan di Jawa. Standard apa? Bagaimana saya boleh menjelaskan perkara ini kepada anda? Musim bunga adalah rangka aplikasi, di mana kami kemudian membuang "daging" - logik perniagaan kami. Dengan bantuan Spring (selepas ini saya akan menggunakan kertas surih ini supaya tidak membuang masa menukar bahasa :D)) Spring memberi kita permulaan dari mana kita mula melakukan segala-galanya. Ia- Adakah anda mahu bekerja dengan pangkalan data? Adakah anda mahu hubungan? Adakah anda mahu tidak berkaitan? Di sini kita dengan Spring Data.
- Adakah anda mahu bekerja dengan permintaan http? Ini dia, Spring web (Spring MVC).
- Adakah anda memerlukan bekas untuk semua objek anda di satu tempat? Inilah Spring Core.
- Adakah anda perlu menyediakan keselamatan pada projek supaya terdapat peranan dan rantaian arahan yang berbeza? Keselamatan Musim Bunga.
- Hanya apabila anda fikir adalah bagus untuk memiliki perkara sedemikian, ternyata Spring sudah mempunyai apa yang anda perlukan, dan ia berintegrasi dengan cepat dan mudah.
Melancarkan SpringBoot
Memandangkan kita sudah faham apa itu Maven, mari kita buat projek baharu untuk keperluan kita. Untuk melakukan ini, anda hanya perlu pergi ke tapak web yang dicipta khas untuk perkara ini. Ia dipanggil Spring Initializr . Di sini anda perlu mengisi dan memilih apa yang anda perlukan:- Alat binaan projek ialah gradle atau maven. Seperti yang anda lihat, Semut tidak lagi disebut. Ini adalah petunjuk yang baik tentang alat binaan yang bernilai masa anda.
- Bahasa yang anda boleh tulis ialah java, kotlin, groovy. Semuanya mudah di sini: semuanya seperti JVM dan mudah menjalankan kod Java. By the way, ia patut melihat Kotlin. Groovy terus terang menjadi tidak menarik (ada masanya mereka beralih kepada alur, tetapi ia cepat berlalu).
- Versi Spring... Di sini anda perlu memahami bahawa versi bahagian utama Spring dan modulnya adalah konsisten.
- Data projek. Saya telah pun menerangkan perkara-perkara ini.
- Kami memilih arkib yang akan dikumpul - Jar atau Perang.
- Nah, versi Java kegemaran kami. Dan baru-baru ini terdapat banyak versi ini... Mereka menunggu selama bertahun-tahun, dan kini terdapat dua versi setahun.
- Maven - bukan sia-sia kami bercakap dengan anda tentang perkara ini sebelum ini.
- Jawa adalah kesayangan kami :D
- Mari ambil versi 2.2.11. Kenapa bukan yang terbaru? Kerana lebih baru, lebih besar kemungkinan terdapat beberapa pepijat di sana. Bagi kami, tidak kira versi mana, tetapi versi yang lebih lama akan lebih dipercayai. Oleh itu, kami memilih 2.2.11.
- Kumpulan: com.github.javarushcommunity
- Artifak: springboot-flyway-demo
- Nama: Demo SpringBoot + Flyway
- Penerangan: Projek menunjukkan integrasi antara SpringBoot dan Flyway . (Ya, keupayaan untuk menulis dokumentasi adalah bahagian penting dalam pembangunan :))
- Nama pakej: com.github.javarushcommunity.springbootflywaydemo . Di sini mereka akan segera membuat pakej asas untuk kami dengan kelas yang akan melancarkan aplikasi kami.
- Pembungkusan: Balang
- Jawa: 8. Jangan kita mendahului lokomotif dan mengambil lapan lama yang baik. Mengapa tidak 11? Untuk apa? Untuk contoh kami, saya tidak nampak maksudnya.
spring.datasource.url=jdbc:mysql://localhost:3306/flyway_demo_db
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Kami menjalankan kaedah utama sekali lagi dan mendapat: Sekarang kita perlu menambah sekurang-kurangnya satu penghijrahan. Untuk mengarang migrasi dengan betul, anda perlu mengambil templat berikut: V<VERSION>__<NAME>.sql Menggunakan templat ini, kami akan mencipta fail migrasi bernama V00001__Create_country_table.sql dalam folder yang sesuai: /src/main/resources/ db.hijrah/ . Mari buat jadual negara di dalamnya. Mari kita ambil skrip dari artikel kedua tentang pangkalan data . Sebelum bermula, mari masuk dan buat pangkalan data untuk kerja: flyway_demo_db. Mari lakukan ini melalui MysqlWorkbench: Sekarang kita boleh menjalankan kaedah utama sekali lagi: Semuanya berjaya, tetapi kerana kita belum mempunyai apa-apa dalam projek itu, ia selesai berfungsi. Walau bagaimanapun, jelas daripada log ( baca apakah log itu ) bahawa:
- Berjaya disambungkan ke pangkalan data.
- Penghijrahan telah disahkan dan semuanya ok.
- Flyway telah mencipta jadual untuk mengurus migrasi.
- Dan apa penghijrahan 00001 bermula - penciptaan negara berjaya.
Kesimpulan
Kali ini kami belajar cara memahami dan menggunakan alat migrasi pangkalan data bersama dengan SpringBoot. Maklumat ini diperlukan untuk memahami apa itu alat kawalan versi pangkalan data, menggunakan Flyway sebagai contoh. Rakan-rakan, kod sumber projek yang saya tunjukkan diterbitkan dalam organisasi kami di Github . Jika anda menyukai contoh itu, berikan bintang dan saya akan faham bahawa kerja saya berguna dan sangat berbaloi untuk diteruskan. Secara tradisinya, saya cadangkan melanggan akaun Github saya . Melalui beliau saya menjalankan semua kerja saya pada sumber terbuka dan semua projek demo yang selalu mengiringi artikel saya. Terima kasih semua kerana membaca. Lain kali kami akan menulis permohonan kami. Akan ada beberapa teori yang diperlukan tentang Docker pada masa hadapan, tetapi kami akan mencairkannya dengan amalan.pautan yang berguna
Hari ini tidak banyak pautan yang berguna. Perhatikan video Evgeniy, ia sangat berbaloi!- Tapak web untuk mencipta projek pada Spring
- Evgeniy Borisov - Pembina musim bunga
- Dokumentasi di Spring untuk Flyway
GO TO FULL VERSION