Java プロジェクトの作成に関するシリーズの記事 (他の資料へのリンクは最後にあります)。その目標は主要なテクノロジーを分析することであり、その結果として電報ボットを作成することができます。このパートでは、SpringBoot と Flyway を起動してみます。 最低限の理論は、お好みで))) FlywayとLiquibaseの最後の比較を無期限に省略して、本題に入ります。それでも、それはすでに長引いています。Flyway について 2 度説明しないように、私は直ちにフライウェイを将来の JRTB プロジェクトに追加することにしました。
多面的で、複数のモジュール式です。
この一環として何をする必要がありますか?
- Maven に基づいて SpringBoot アプリケーションを起動します。
- そこに Flyway を追加します。幸いなことに、それらは簡単に統合できます。
- サンプル データベースにあるテーブルのスキーマを追加します。
フライウェイとは
何かを使用するには、まずそれが何なのか、そしてなぜ使用するのかを理解する必要があります。 Flyway はデータベースのバージョン管理ツールです。言葉としてはよく知られているのに、なんとなく理解が加わっていないですよね?フライウェイが解決する問題を説明してみましょう。プロジェクトがあるとしましょう。私たちの世界のすべてのものと同様に、それは完璧ではないため、プロジェクトの最終バージョンを計画して作成することはできませんでした。特定の不明なニュアンスが現れるたびに。このプロジェクトは作業中にデータベースを使用します。もちろん、プロジェクトが変更されると、データベースの構造も変更される可能性があります。プロジェクト内のエンティティの 1 つに新しいフィールドを追加するとします。どうやってするの?- このフィールドをエンティティに追加し、ビジネス ロジックが機能するようにすべてを更新します。
- データベースを更新します。唯一可能な方法は手動で行うことです。これを行うには、必要な SQL スクリプトを登録する必要があります。
- しかし、プロジェクトをデプロイする場所が複数ある場合、それぞれの場所でこれを行う必要があるのでしょうか?
- また、元に戻したい場合、データベース構造が現在どのような状態にあるのかを正確に知るにはどうすればよいでしょうか?
- データベースの変更が成功したことを確認するにはどうすればよいでしょうか?
- プロジェクトで行われたすべてのデータベース変更を追跡する機会を得るにはどうすればよいですか?
SpringBoot + Flyway を起動する
スプリングブートとは
私たちは何を立ち上げているのでしょうか?...私たちが何をしているのか、そしてなぜそれを行っているのかを理解するには、SpringBoot が何であるかを判断する必要があります。まず、簡単に (まあ、非常に簡単に) Springについて話しましょう。現時点では、これは Java でサーバー アプリケーションを開発する際の事実上の業界標準です。何の基準?これをどう説明すればよいでしょうか? Spring はアプリケーションのスケルトンであり、そこに「肉」、つまりビジネス ロジックを投入します。Spring の助けを借りて (以下、言語を切り替える時間を無駄にしないために、このトレーシングペーパーを使用します:D)) Spring は、すべての作業を開始するためのスタートを与えてくれます。それは- データベースを操作したいですか? 関係性が欲しいですか?非関係性を望みますか? ここでは Spring Data について説明します。
- http リクエストを処理しますか? さあ、Spring Web (Spring MVC) です。
- すべてのオブジェクトを 1 か所にまとめたコンテナが必要ですか? こちらがスプリングコアです。
- さまざまな役割と指揮系統が存在するように、プロジェクトにセキュリティを設定する必要がありますか? スプリングセキュリティ。
- このようなものがあればいいのにと思ったとき、Spring には必要なものがすでに備わっており、迅速かつ簡単に統合できることがわかりました。
SpringBootの起動
Maven が何であるかをすでに理解したので、ニーズに合わせて新しいプロジェクトを作成しましょう。これを行うには、この問題のために特別に作成された Web サイトにアクセスするだけです。これはSpring Initializrと呼ばれます。ここで、必要なものを入力して選択する必要があります。- プロジェクトのビルド ツールは gradle または maven です。ご覧のとおり、Ant については言及すらされなくなりました。これは、どのビルド ツールが時間を費やす価値があるかについての良いヒントになります。
- 記述できる言語は java、kotlin、groovy です。ここではすべてが単純です。これらはすべて JVM に似ており、Java コードを簡単に実行できます。ちなみに、Kotlin については検討してみる価値があります。グルービーは正直面白くなくなってきました(グルーヴに切り替えた時期もありましたが、すぐに過ぎてしまいました)。
- Spring バージョン...ここでは、Spring の主要部分とそのモジュールのバージョンが一貫していることを理解する必要があります。
- プロジェクトデータ。これらのことについてはすでに説明しました。
- Jar または War のどちらのアーカイブを収集するかを選択します。
- さて、私たちのお気に入りの Java バージョンです。そして最近、このようなバージョンがたくさん出てきました...何年も待ちましたが、今では年に2つ出ています。
- メイビン - 以前にこのことについてお話したのは無駄ではありません。
- Java は私たちの最愛の人です :D
- バージョン 2.2.11 を見てみましょう。なぜ最新のものではないのでしょうか?新しいものであればあるほど、バグが存在する可能性が高くなります。私たちにとって、どのバージョンでも問題ありませんが、古いバージョンの方が信頼性が高くなります。したがって、2.2.11 を選択します。
- グループ: com.github.javarushコミュニティ
- アーティファクト: springboot-flyway-demo
- 名前: SpringBoot + Flyway デモ
- 説明:プロジェクトは、 SpringBoot と Flyway の統合を示します。(はい、ドキュメントを書く能力は開発の重要な部分です:))
- パッケージ名: com.github.javarushcommunity.springbootflywaydemo。ここで、アプリケーションを起動するクラスを含む基本パッケージがすぐに作成されます。
- 包装:瓶
- Java: 8. 機関車の先を行くのではなく、古き良き 8 号に乗りましょう。なぜ11ではないのでしょうか?何のために?私たちの例では、意味が分かりません。
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
main メソッドを再度実行すると、次の結果が得られます。次に、少なくとも 1 つの移行を追加する必要があります。移行を正しく作成するには、次のテンプレートを使用する必要があります: V<VERSION>__<NAME>.sqlこのテンプレートを使用して、 V00001__Create_country_table.sqlという名前の移行ファイルを適切なフォルダーに 作成します: /src/main/resources/ db.migration/。その中に国テーブルを作成しましょう。データベースに関する 2 番目の記事からスクリプトを取り出してみましょう。始める前に、作業用のデータベース flyway_demo_db を作成しましょう。MysqlWorkbench を使用してこれを実行してみましょう。これで、メイン メソッドを再度実行できます。すべてがうまくいきましたが、プロジェクトにはまだ何もないので、動作は終了しました。ただし、ログから次のことが明らかです (ログが何であるかを読んでください)。
- データベースに正常に接続されました。
- 移行は検証されており、すべて問題ありません。
- Flyway は、移行を管理するためのテーブルを作成しました。
- そして、移住00001が始めたこと - 国の創設は成功しました。
GO TO FULL VERSION