最近Play frameworkに影響されたフレームワークがいくつか出ているようで、
マイクロフレームワークと呼ばれているようです。
Ninja Framework
今日ははその一つである Ninja framework を見ていきたいと思います。
とりあえず公式サイトに沿ってチュートリアルを動かしてみます。
http://www.ninjaframework.org/documentation/getting_started/create_your_first_application.html
mvn archetype:generate -DarchetypeGroupId=org.ninjaframework -DarchetypeArtifactId=ninja-servlet-archetype-simple cd ninja-servlet-archetype-simple mvn clean install mvn ninja:run
これでとりあえず開発サーバが起動します。
Playのようにバイナリパッケージを展開してコマンドにPATHを通したりといった作業が必要ないところはいいかも。
ちなみに開発サーバのポートを変えたい場合は下記の通り。
mvn ninja:run -Dninja.port=8081
ブラウザで localhost:8081 を開くと初期状態のHomeが表示されます。
最初からwebjarsのbootstrapが組み込んであって好印象。
DBアクセス
続いてDBアクセスを試します。
これもチュートリアルに書いてあるとおり。
http://www.ninjaframework.org/documentation/working_with_relational_dbs/jpa.html
テーブルの作成はpersistence.xmlに下記の設定を追加し、JPA(Hibernate)に任せるのが基本的には楽ですが、
<property name="hibernate.hbm2ddl.auto" value="update"/>
自前でマイグレーションSQLを用意してテーブルを作成したい場合は、
Flyway というライブラリに則ってやる事も可能なようです。
- conf/application.confに追記
ninja.migration.run=true
- db/migration/V1__hogehoge.sql
create table Hoge ( id int(11) primary key, name varchar(255) );
自動的にV1__hogehoge.sqlがDBに適用されます。テーブル名がおかしい場合など、自動的にFlywayがバリデートしてくれるようです。
個人的には開発中はHibernateの自動スキーマ作成に頼り、運用中は検証済みのDDLファイルを慎重に適用したい派なので、Flywayを使うことは無いかもしれません。
(Flywayのバリデートで謎のエラーが出て地味にハマったので・・・)
ちょっと触った感想
- Controller,ViewがPlay1系に近い感じで好印象
- DB周りは素のJPAなので、取っつきやすい反面、PlayのModel程は使いやすくなさそう
- バイトコードをいじらないようなので、若干安心
しばらく触ってみたいと思います。