Spring | h2


👂 入る前に。


awsでは個人dbをアップグレードして多く使用することが多い.
しかし、私は最近awsのセキュリティを変更しました.特定の場所のipのみ許可されます.
この点から,メモリ状態のdbでは小さなdbが必要であり,ちょうどh 2ベースであることがわかる.そこで,springbootでh 2ベースをどのように使用するかについて説明する.

🧑🏻‍💻 H 2ベスとは?


H 2はJavaで作成されたリレーショナルデータベース管理システムである.
Javaアプリケーションで実行するか、クライアント-サーバモードで実行できます.

主な機能

  • SQL標準の一部をサポートします.
  • メモリテーブル
  • とディスクベースのテーブルを同時に作成できます.
  • テーブルは、永続的または一時的であってもよい.メモリ・テーブルの場合、インデックス・タイプはハッシュ・テーブルであってもツリーであってもよく、ディスク・ベースのテーブルの場合、Bツリーを使用してもよい.
  • [参考]

    🥸 SpringでのH 2ベースの使用


    もちろんgradeとymlも追加します.
    gradleの場合、h 2ベースを作成するために依存項目を作成できます.
    ymlはh 2ベース環境に基づいて作成される.

    build.gradle

    dependencies {
        runtimeOnly 'com.h2database:h2'
    }

    application.yml

    spring:
      h2:
        console:
          enabled: true
          path: /h2-console
      datasource:
        url: jdbc:h2:~/test;
        driver-class-name: org.h2.Driver
        username: sa
        password:
      jpa:
        database-platform: org.hibernate.dialect.H2Dialect
    このように設定し、スプリングガイドを再実行します.
    うまく貼ればh2-consleに接続できます.
    (h 2-consoleにリンク)

    では、上の写真のようにコンソールに入ることができます.しかし、私たちは単純なプロジェクトではありません.
    スプリングスタート!!
    スプリングと不可欠な安全性が設定されているはずです.もちろん、セキュリティ設定がされていなければ
    エラー・ページは生成されません.
    しかし筆者の場合は楽ページが生成されています...

    心配しないで、まだ設定がありますよ!!下のように秘密の場所を設ける!静的ファイルを設定する場所
    h 2-コンソールuriを設定!それで終わりだ!
        @Override
        public void configure(WebSecurity web) throws Exception {
            web.ignoring()
                    // Http Method OPTIONS
                    .antMatchers(HttpMethod.OPTIONS, "/**")
                    // h2 console 추가
                    .antMatchers("/h2-console/**")
            ;
        }
    コンソールで「接続」ボタンを押すことで、dbをインストールせずにh 2データベースを使用できます!!

    🚨 TCPの使用


    上の状況はfile...もう一度探しました.
    だからtcpサーバに接続することにしました.これは、スマートデバイスでも使いやすく、tcpを使えばファイルを無駄にしたり、パソコンに残したりしないという利点があるからです.

    application.yml

    spring:
      h2:
        console:
          enabled: true
          path: /h2-console
      datasource:
        hikari:
          jdbc-url: jdbc:h2:tcp://localhost:9092/mem:testdb
          driver-class-name: org.h2.Driver
          username: sa
          password:
      jpa:
        database-platform: org.hibernate.dialect.H2Dialect

    java config

    @Profile("h2")
    @Configuration
    public class H2Configuration {
    
        @Bean
        @ConfigurationProperties("spring.datasource.hikari")
        public HikariDataSource dataSource() throws SQLException {
            Server server = defaultRun();
            return new HikariDataSource();
        }
    
        private Server defaultRun() throws SQLException {
            return Server.createTcpServer(
                    "-tcp",
                    "-tcpAllowOthers",
                    "-ifNotExists",
                    "-tcpPort", 9092 + "").start();
        }
    
    }
    前述したように、設定を操作し、h 2を使用しても問題ないはずです.
    エラーが発生した場合は、メッセージとともに検索できます.

    ymlの設定に従って、remoteとしてuriを書きます.
    最近自動でやればライブに入らなくてもまずIDEで使えます!ああ...

    👊 の最後の部分


    本当のh 2 baseは筆者にとって最高です
    何のメリットがありますか?まずawsに依存しませんか?dbをサーバにアップロードしなくても使えます...
    もちろんローカルでアップロードして使うこともできますが面倒すぎます...しかし、サーバーを購入する費用も高い!!
    だからh 2の基礎の情況はとても良くて、この点は最小化することができます!
    ただし、少量の作業しかできないプロジェクトに貼り付けると、残りの大きなプロジェクトはもちろんdbサーバを構成して使用します!