Artikel dari seri tentang membuat proyek Java (tautan ke materi lain ada di akhir). Tujuannya adalah menganalisis teknologi utama, dan hasilnya adalah menulis bot telegram. Pada bagian ini, kami mencoba meluncurkan SpringBoot dan Flyway. Jumlah minimum teori, sesuka Anda))) Kami menghilangkan perbandingan akhir Flyway/Liquibase untuk jangka waktu tidak terbatas dan langsung ke intinya. Meski begitu, hal itu sudah berlangsung lama. Agar tidak mendeskripsikan Flyway dua kali, saya memutuskan untuk segera menambahkannya ke proyek JRTB kami yang akan datang.
banyak segi, multi-modular:
Apa yang perlu kita lakukan sebagai bagian dari hal ini?
- Luncurkan aplikasi SpringBoot berdasarkan Maven.
- Tambahkan Jalur Terbang di sana: untungnya, semuanya mudah diintegrasikan.
- Tambahkan skema untuk tabel yang kita miliki di database contoh.
Apa itu jalur terbang
Untuk menggunakan sesuatu, pertama-tama Anda perlu mencari tahu apa itu dan mengapa. Flyway adalah alat kontrol versi database. Kata-katanya sudah terkenal, tapi entah kenapa belum ditambah pengertiannya ya? Mari kita coba menjelaskan permasalahan yang dipecahkan oleh jalur terbang. Katakanlah kita mempunyai sebuah proyek. Seperti segala sesuatu di dunia kita, ini tidak sempurna, sehingga tidak mungkin merencanakan dan menyusun versi final proyek tersebut. Setiap kali nuansa tertentu yang tidak terhitung muncul. Proyek ini menggunakan database dalam pekerjaannya. Tentu saja, jika proyek berubah, struktur database juga dapat berubah. Katakanlah kita menambahkan bidang baru untuk salah satu entitas dalam proyek kita. Bagaimana cara melakukannya?- Tambahkan bidang ini ke entitas kami, perbarui semuanya agar logika bisnis berfungsi.
- Perbarui basis data. Satu-satunya cara yang mungkin adalah melakukannya secara manual. Untuk melakukan ini, Anda harus masuk dan mendaftarkan skrip sql yang diperlukan.
- Namun jika kita memiliki lebih dari satu tempat untuk menerapkan proyek, apakah hal ini perlu dilakukan di masing-masing tempat tersebut?
- dan jika kita ingin kembali ke masa lalu, bagaimana kita tahu persis keadaan struktur database saat ini?
- Bagaimana kita yakin bahwa perubahan database berhasil?
- Bagaimana saya bisa mendapatkan kesempatan untuk melacak semua perubahan database yang terjadi pada proyek?
Luncurkan SpringBoot + Jalur Terbang
Apa itu Sepatu Musim Semi
Apa yang kami luncurkan?... Untuk memahami apa dan mengapa kami melakukan, Anda perlu memutuskan apa itu SpringBoot. Pertama, mari kita bahas dengan cepat (yah, sangat cepat) tentang Spring . Saat ini, ini adalah standar industri de facto dalam pengembangan aplikasi server di Java. Standar apa? Bagaimana saya bisa menjelaskan hal ini kepada Anda? Pegas adalah kerangka aplikasi, yang kemudian kita lemparkan “daging” – logika bisnis kita. Dengan bantuan Spring (selanjutnya saya akan menggunakan kertas kalkir ini agar tidak membuang waktu berpindah bahasa :D)) Spring memberi kita awal dari mana kita mulai melakukan segalanya. Ini memiliki- Apakah Anda ingin bekerja dengan database? Apakah Anda ingin relasional? Apakah Anda ingin non-relasional? Ini dia dengan Spring Data.
- Apakah Anda ingin bekerja dengan permintaan http? Ini dia, web Spring (Spring MVC).
- Apakah Anda memerlukan wadah untuk semua benda Anda di satu tempat? Inilah Inti Musim Semi.
- Apakah Anda perlu mengatur keamanan pada suatu proyek sehingga terdapat peran dan rantai komando yang berbeda? Keamanan Musim Semi.
- Saat Anda mengira akan menyenangkan memiliki hal seperti itu, ternyata Spring sudah memiliki apa yang Anda butuhkan, dan terintegrasi dengan cepat dan mudah.
Meluncurkan SpringBoot
Karena kita sudah memahami apa itu Maven, mari kita buat proyek baru untuk kebutuhan kita. Untuk melakukan ini, Anda hanya perlu mengunjungi situs web yang khusus dibuat untuk masalah ini. Ini disebut Spring Initializr . Di sini Anda perlu mengisi dan memilih apa yang Anda butuhkan:- Alat pembangunan proyek adalah gradle atau maven. Seperti yang Anda lihat, Ant bahkan tidak disebutkan lagi. Ini adalah petunjuk bagus tentang alat pembangunan mana yang layak untuk Anda gunakan.
- Bahasa yang dapat Anda gunakan untuk menulis adalah java, kotlin, groovy. Semuanya sederhana di sini: semuanya mirip JVM dan kode Java dapat dijalankan dengan mudah. Omong-omong, ada baiknya melihat Kotlin. Groovy sejujurnya menjadi tidak menarik (ada saat ketika mereka beralih ke alur, tetapi itu segera berlalu).
- Versi musim semi... Di sini Anda perlu memahami bahwa versi bagian utama Spring dan modulnya konsisten.
- Data proyek. Saya sudah menjelaskan hal-hal ini.
- Kami memilih arsip mana yang akan dikumpulkan - Jar atau War.
- Nah, versi Java favorit kami. Dan baru-baru ini ada banyak sekali versi ini... Mereka menunggu bertahun-tahun, dan sekarang ada dua dalam setahun.
- Maven - bukan tanpa alasan kami membicarakan hal ini dengan Anda sebelumnya.
- Java adalah kesayangan kami :D
- Mari kita ambil versi 2.2.11. Kenapa bukan yang terbaru? Karena semakin baru, kemungkinan terdapat beberapa bug di sana akan semakin besar. Bagi kami, tidak masalah versi yang mana, namun versi yang lebih lama akan lebih dapat diandalkan. Oleh karena itu, kami memilih 2.2.11.
- Grup: com.github.javarushcommunity
- Artefak: springboot-flyway-demo
- Nama: SpringBoot + Demo Jalur Terbang
- Deskripsi: Proyek menunjukkan integrasi antara SpringBoot dan Flyway . (Ya, kemampuan menulis dokumentasi adalah bagian penting dari pengembangan :))
- Nama paket: com.github.javarushcommunity.springbootflywaydemo . Di sini mereka akan segera membuatkan paket dasar untuk kita dengan kelas yang akan meluncurkan aplikasi kita.
- Kemasan: Toples
- Java: 8. Jangan mendahului lokomotif dan mengambil lokomotif tua yang bagus. Kenapa bukan 11? Untuk apa? Untuk contoh kita, saya tidak mengerti 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 metode utama lagi dan mendapatkan: Sekarang kita perlu menambahkan setidaknya satu migrasi. Untuk membuat migrasi dengan benar, Anda perlu mengambil templat berikut: V<VERSION>__<NAME>.sql Dengan menggunakan templat ini, kita akan membuat file migrasi bernama V00001__Create_country_table.sql di folder yang sesuai: /src/main/resources/ db.migrasi/ . Mari buat tabel negara di dalamnya. Mari kita ambil script dari artikel kedua tentang database . Sebelum memulai, mari masuk dan buat database untuk pekerjaan: flyway_demo_db. Mari kita lakukan ini melalui MysqlWorkbench: Sekarang kita dapat menjalankan metode utama lagi: Semuanya berhasil, tetapi karena kita belum memiliki apa pun di proyek, maka proyek selesai. Namun, jelas dari log ( baca apa itu log ) bahwa:
- Berhasil terhubung ke database.
- Migrasi telah divalidasi dan semuanya baik-baik saja.
- Flyway telah membuat tabel untuk mengelola migrasi.
- Dan migrasi apa yang dimulai 00001 - penciptaan negara berhasil.
Kesimpulan
Kali ini kita mempelajari cara memahami dan menggunakan alat migrasi database bersama dengan SpringBoot. Informasi ini diperlukan untuk memahami apa itu alat kontrol versi database, dengan menggunakan Flyway sebagai contoh. Teman-teman, kode sumber proyek yang saya tunjukkan dipublikasikan di organisasi kami di Github . Jika Anda menyukai contohnya, beri bintang , dan saya akan memahami bahwa pekerjaan saya bermanfaat dan sangat layak untuk dilanjutkan. Secara tradisional, saya menyarankan untuk berlangganan akun Github saya . Melalui dia saya melakukan semua pekerjaan saya pada open source dan semua proyek demo yang selalu menyertai artikel saya. Terima kasih semuanya telah membaca. Lain kali kita akan menulis lamaran kita. Akan ada beberapa teori yang diperlukan tentang Docker di masa depan, tetapi kami akan melemahkannya dengan praktik.tautan yang bermanfaat
Saat ini tidak banyak tautan yang berguna. Perhatikan video Evgeniy, worth it banget!- Situs web untuk membuat proyek di Spring
- Evgeniy Borisov - Pembangun musim semi
- Dokumentasi di Musim Semi untuk Jalur Terbang
GO TO FULL VERSION