ドキュメント

§H2データベース

注: Play 2.6.x以降では、H2依存関係を自分で含める必要があります。これを行うには、build.sbtに以下を追加するだけです。

libraryDependencies += "com.h2database" % "h2" % "1.4.192"

インメモリH2データベースは、Playが再起動されると進化が最初から実行されるため、開発に非常に便利です。Anormを使用している場合は、計画している本番データベースを密接に模倣する必要があるでしょう。特定のデータベースを模倣したいことをh2に伝えるには、application.confファイルのデータベースURLにパラメーターを追加します。たとえば、

db.default.url="jdbc:h2:mem:play;MODE=MYSQL"

§ターゲットデータベース

MySql MODE=MYSQL
  • H2にはuuid()関数がありません。代わりにrandom_uuid()を使用できます。または、1.sqlファイルに次の行を挿入します。
    CREATE ALIAS UUID FOR
    "org.h2.value.ValueUuid.getNewRandom";
  • MySQLでのテキスト比較はデフォルトで大文字と小文字を区別しませんが、H2では(他のほとんどのデータベースと同様に)大文字と小文字を区別します。H2は大文字と小文字を区別しないテキスト比較をサポートしていますが、SET IGNORECASE TRUEを使用して別途設定する必要があります。これは、=、LIKE、REGEXPを使用した比較に影響します。
DB2 MODE=DB2
Derby MODE=DERBY
HSQLDB MODE=HSQLDB
MS SQL MODE=MSSQLServer
Oracle MODE=Oracle
PostgreSQL MODE=PostgreSQL

§インメモリDBのリセットを防ぐ

H2は、デフォルトでは、それ以上の接続がない場合、インメモリデータベースをドロップします。おそらく、これを起こしたくないでしょう。これを防ぐには、URLに`DB_CLOSE_DELAY=-1`を追加します(区切り文字としてセミコロンを使用します)。例:`jdbc:h2:mem:play;MODE=MYSQL;DB_CLOSE_DELAY=-1`

注:Playの組み込みJDBCモジュールは自動的に`DB_CLOSE_DELAY=-1`を追加しますが、evolutionsでplay-slickを使用している場合は、データベースURLに手動で`;DB_CLOSE_DELAY=-1`を追加する必要があります。そうしないと、evolutionsが実行された後にPlayアプリケーションが再起動するため、evolutionsがエンドレスループになり、適用されたevolutionsが直接失われます。

§注意点

H2は、デフォルトでは、テーブルを大文字の名前で作成します。互換性モードでPlay evolutionsと一緒にH2を使用する場合など、これを起こしたくない場合があります。これを防ぐには、URLに`DATABASE_TO_UPPER=FALSE`を追加します(区切り文字としてセミコロンを使用します)。例:`jdbc:h2:mem:play;MODE=PostgreSQL;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=FALSE`

§H2ブラウザ

sbtシェルで`h2-browser`と入力して、データベースの内容を閲覧できます。SQLブラウザがWebブラウザで実行されます。

§H2ドキュメント

H2ドキュメントの詳細については、Webサイトをご覧ください。

次へ:データベースの進化の管理


このドキュメントにエラーを見つけましたか?このページのソースコードはこちらにあります。ドキュメントガイドラインをお読みいただいた後、お気軽にプルリクエストを送信してください。質問やアドバイスがありますか?コミュニティフォーラムに参加して、コミュニティとの会話を始めましょう。