JetBrains IDEでデータベースを開発する


この記事はJetBrainsIDE Advent Calendarの2日目の記事になりました。

TL;DR

JetBrains IDEはデータベース開発においてもとても便利だったので(ただしUltimateに限る)、ideaを使ったデータベース開発の流れをまとめます。
具体的には、データソースに接続し、クエリを実行する所までを解説します。おまけでDAO開発でも補完を使う方法に触れます。
データベースやテーブルは存在し、SQLを使う前提で話を進めます。

どの辺が便利?

コードだけでなく、テーブル・DB名にも補完が効いたり、複数のDBを切り替えながら開発したり、データベースツールウィンドウを見ながら直観的に開発できるのが便利です。
後、JetBrains IDE全般に言えることですが、これらの機能をプラットフォーム関係なく利用できるのが本当に素晴らしいです。

データソース/データベースへの接続環境を整える

データソースに接続する

View > Tool Windows > Database、もしくは右サイドバーのDatabaseタブを選択し、データベースツールウィンドウを表示します。


データベースツールウィンドウから左上の+を選び、接続するデータソースを選択します。今回はMySqlを選択します。

選択すると以下ようなの設定画面が出るので、適切な情報を設定し、Test Connectionが成功すればデータソースへの接続は完了です。
ここでDatabaseを設定してあると、クエリ実行時に設定したDatabaseがデフォルトでuseされます。
状況に応じてRead-onlyを設定しておくと、データベースに変更を加えたくない時に便利です。

この設定はデータベースツールウィンドウの設定ボタンからいつでも変更できます。

スキーマを選ぶ

データソースへ接続した後は、使用するdatabaseを設定します。
接続が成功すると、先ほどの設定画面のSchemasタブにデータソースに存在するdatabaseが一覧で表示されるので、利用するものを選択します。

ここで選択したDBは、SQLの外部キーをDBを跨いで貼る際の補完や、データベースツールウィンドウへの一覧表示で利用されます。

接続後

接続が完了すると以下のようになります(画像ではデータソースを2つ設定してあります)。右側に出ている「2 of 12」やらの数字はスキーマ内のDB数と先ほど選択したDB数です。

クエリを実行する

Diarectを設定する

SQLにはDialect(方言)が多々あるため、IDEに適切なDialectを設定しなければハイライトや補完がうまく機能しません。
ということで、Diarectを先に設定しておくことをお勧めします。
この設定については自分が書いた記事があるので、そちらを参照してください。

クエリを実行する

とりあえずtesttesttest.sqlというファイルを作り、以下のようなクエリを書いてみます。

testtesttest.sql
CREATE TABLE testtesttest(
  id INT UNSIGNED NOT NULL PRIMARY KEY,
  name VARCHAR(255) NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

実行は⌘⏎でできます。
1ファイル内に複数のクエリがある場合は、カーソルの有る部分のクエリを実行するのか、ファイル内のクエリ全体を実行するのかを聞かれます。

データソース/データベースが複数ある場合

データソースが複数ある場合、どのデータソースのコンソールで実行するかを聞かれます。
また、実行するデータソース/データベースは先に設定されているものが使われるので、コンソールの状態は先に確認しておいた方が安全です。
この設定は左側のプロジェクトツールウィンドウの下の方にあるDatabase Consolesからコンソールファイルを開くことで見ることができます。

コンソールでどのdatabaseがuseされているかは、コンソールファイルの右上から確認できます。ここを押すことで設定することもできます。
何も設定されていない場合<schema>と表示されます。

一度クエリを実行してやると、.sqlファイルの右上にも同じようなメニューが表示されるようになります。<schema>の右側に表示されているのはどのコンソールが選択されているかで、こちらも変更が可能です。

DAOでも補完を使う

他言語からDBへアクセスするためにクエリを書くという状況でもJetBrains IDEは便利です。
この記事の中のデータソースとDiarectの設定をし、言語インジェクションを使うことでSQLを補完してもらうことができます。
言語インジェクション関連は公式の解説ページが詳しいです。

終わりに

記事は以上です。JetBrains IDEは神器。