ちょっと見てみました。
- Ruby on Railsみたくscaffoldを簡単に作れるようにしている(平たく言えばJava版Rails)
- エンプラ系の機能が組込みやすそう(Web workflowやsecurityなど)
- ラウンドトリップ対応
たとえば・・・
で、Springを使ったWebAPのひな型が生成される。roo> create project -topLevelPackage net.stsmedia.roo.shoppinglist
roo> install jpa -database HYPERSONIC_IN_MEMORY -provider HIBERNATE
roo> new persistent class jpa -name ~.domain.Item
roo> add field string -fieldName name -notNull
roo> add field string comments -sizeMax 150
roo> add field number -fieldName price -type java.lang.Float
roo> new persistent class jpa -name ~.domain.ShoppingList
roo> add field string -fieldName title -notNull
roo> add field date jpa -fieldName shoppingDate -type java.util.Date
roo> add field set jpa -element ~.domain.Item -fieldName items
roo> new controller automatic -name ~.web.ShoppingListController
roo> new controller automatic -name ~.web.ItemController -formBackingObject ~.do.main.Item
具体的には上記コマンドで以下のようなものが生成される。
- Maven2プロジェクト構造に沿ってフォルダや設定ファイル
- エンティティクラス(上記だとItem、ShoppingListクラス)
- コントローラクラス(上記だとShoppingListControllerクラスなど)
- テストコード
- JSPファイル
- その他、設定ファイル(applicationContext.xmlやweb.xmlなど)
- そして、アスペクト(.ajファイル)
@Entity
@RooEntity
@RooJavaBean
@RooToString
public class ShoppingList {
@NotNull
private String title;
@Temporal(TemporalType.TIMESTAMP)
private Date shoppingDate;
@OneToMany(cascade = CascadeType.ALL)
private Set- items = new HashSet
- ();
}
AOPでラウンドトリップを実現していて、開発者がいじるコード部分以外はアスペクトとして自動生成されている。アスペクトコードは開発者がいじらないようになっている(つまり、再生成時はアスペクトコードのみ変更される)。
…っていうのが、概要を見た感じだが、もう少し中身見たいな。


0 コメント:
コメントを投稿