18日目 Databaseプラグイン

地味に便利な Databaseプラグインについてです。IDEからDBを操作する機能ですが、NetBeansにも似たような機能があるし、今やさほど珍しい機能ではないですね。


そんな中でIntelliJっぽいなぁという機能について紹介します。

DDL 文からDBの定義を再現

この手の機能はDBに接続すると相場が決まっているのですが、IntelliJの場合、DDLが定義されたファイルだけでも、この機能を利用できます。


使い方は、Databaseウィンドウを開き「+」ボタンを押して "DDL Data Source"を選択。以下のようなダイアログが表示されるので,"DDL Files"の「+」ボタンを押して,任意のDDLファイルを指定します。


DB が別のネットワークにあるなどの理由で参照できないときでも、構造を可視化できて意外と助かる事が多いです。

スキーマの比較

DB専用ツールだと、そんなの出来のがあったと思いますが、実はIntelliJでも出来ました。
Databaseウィンドウで比較したいスキーマを2つ選んで、ツールバーの「Compare」を押す。


オンラインとDDLの比較なんてのもできるので,まあまあ便利です。普通のDiffと異なるのは,DDLの記述順に囚われずテーブルの比較をしてくれるので,DDLファイル同士のdiffを取るよりは,親切な結果が得られます。


Language Injection でプログラム中でもコード補完

Data Sourceが設定されている状態で,JDBC API(StatementやPrepareStatementクラスなど)にSQL文をタイプすると(うまくすると)コード補完が効きます。「うまくいくと」というのは,何か知らないけど上手く行かない事もままあるためです。


それと,JDBCではなく別のAPI(オレオレAPIだったりするかもしれません)で,SQL文の補完を有効にしたい場合は,Intension(ALT+Enter)メニューの"Language Injections Settings"から追加で設定することができます。


すると、こうなります。結構うれしい。:-)


特定のAPIだけではなく、String型のローカル変数に対してもLanguage Injectionをかけることが出来るのですが、その場合、次のようにIntelliJ固有のアノテーションを付けなければならないのが難しいところです。:-(


アノテーション付けなくても何とかする方法もあったと思ったのですが、ちょっとその設定を特定できてません...。が、IDEA12だとアノテーションやコメントアノテーションを使わなくてもLanguage Injectionができるようです。


(追記)しおしおさんが追加調査してくれました。:-)
2012-12-18


JPAについて

一応、JPAエンティティを作る機能を持っていますが、あまり洗練されてるように思えないし、正直使いづらかったです。生成されるエンティティもアノテーションごてごてで見づらかった記憶が...。このへんについてはNetBeansのほうが扱いやすいと思います。


一応、画面の紹介だけしておきます。


(おまけ)DBの起動
NetBeansの組み込みJavaDBがうらやましくて、Derbyを起動・停止するだけのプラグインを作ったこともありますが、よーく考えてみると外部ツールに登録すれば済む話だったのはナイショです。:-)
Derbyプラグインできたよ


ps.
本家ブログでIDEA12のDatabaseプラグインの説明が出ましたね。
Manage Your Database Schema in IntelliJ IDEA 12 | IntelliJ IDEA Blog