 |

|
徹底比較!!Ruby on Rails vs Javaフレームワーク |
第7回:RailsとGrailsの比較(後編)
著者:アスタリクス 大西 正太 2006/10/25
|
|
|
前のページ 1 2 3 次のページ
|
 |
バリデーション
|
Railsではモデルクラスに宣言的にバリデーション情報を記述することができます。
Grailsでは、モデルクラス内のconstraintsメソッドにバリデーション記述を書くことができます。リスト2ではnameとpass属性のバリデーションを記述しています。
リスト2:Grailsのバリデーション
class Person {
Long id
Long version
String name
String pass
def constraints = {
name(length:8..30, blank:false, unique:true)
password(length:6..10,blank:false)
}
}
|
ダイナミックファインダ
|
Railsではメソッド定義なしでモデルの「find_by_*」(*は任意のカラム名)というメソッドを呼び出すことができ、自動的にカラム名をキーにした検索処理が実施されます(ダイナミックファインダ機能)。
この機能はGrailsにも準備されており、メソッド定義なしでも「findBy*」というメソッドでRailsと同様の効果を得られます。また、Grailsのモデルで「listOrderBy*」というメソッドを利用すると、ソートされた検索結果一覧を得ることができます。
未定義メソッドでこのような効果を得る機能はRailsには見当たりません(注2)。
※注2:
Railsでも通常の方法で「order by」指定することはできます
リスト3:Grailsのダイナミックファインダ
Person.findByName('yamada') //<= "yamada"という名前のPersonを検索
Person.listOrderByAge() //<= "age"順にPersonの一覧を取得
|
対応RDB
|
RailsとGrailsの対応RDBをまとめたものが表6です。両者ともメジャーな製品に対応しており、大差はありません。
- Railsの対応RDB
- DB2、Firebird、MySQL、OpenBase、Oracle、PostgreSQL、sqlite、SQL Server、Sybase
- Grailsの対応RDB
- DB2、HSQL DB、SQL Server、MySQL、Oracle、PostgreSQL、SAP DB、Sybase、Timesten
表4:RailsとGrailsの対応RDB
|
モデル比較の結論
|
モデルにおける機能的な面で比べると、Railsにしかない機能もGrailsにしかない機能もあるといった状態で、大差はありません。
スキーマ管理についてはRailsとGrailsの考え方は大きく異なっています。すべてGroovy上で完結するGrailsの考え方はシンプルですが、インデックスやカラムサイズを指定できない点を考慮すると、本格的なサイトの運用には耐えないかもしれません。
現状ではRailsのモデルの方がGrailsよりも優れているといえるのではないでしょうか。
|
前のページ 1 2 3 次のページ
|

|
|

|
著者プロフィール
株式会社アスタリクス 大西 正太
JavaEEフレームワークの設計構築や開発プロセス策定などの業務を経て、現在は新規ビジネス創生に携わる。Ruby on Rails上に構築したオープンソースのCMS「Rubricks」(http://rubricks.org/)のコミッタ。
|
|
|
|