第7回:RailsとGrailsの比較(後編) (2/3)

徹底比較!!Ruby on Rails vs Javaフレームワーク
徹底比較!!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/)のコミッタ。


INDEX
第7回:RailsとGrailsの比較(後編)
  はじめに
バリデーション
  その他の比較
徹底比較!!Ruby on Rails vs Javaフレームワーク
第1回 O/Rマッピング
第2回 JSFとRailsで比較(前編)
第3回 JSFとRailsで比較(後編)
第4回 DIコンテナとの比較
第5回 テストフレームワーク
第6回 RailsとGrailsの比較(前編)
第7回 RailsとGrailsの比較(後編)
Ruby on Rails入門
第1回 Railsが注目されている理由
第2回 すぐできるアプリケーション作成
第3回 アーキテクチャと検索機能の追加
第4回 Railsでテストをしてみよう
第5回 Ajaxアプリケーションの作成
第6回 プラグインでさらに生産性アップ
第7回 Linux環境で動作させよう

人気記事トップ10

人気記事ランキングをもっと見る