第1回:O/Rマッピング (2/4)

徹底比較!!Ruby on Rails vs Javaフレームワーク
徹底比較!!Ruby on Rails vs Javaフレームワーク

第1回:O/Rマッピング

著者:アスタリクス  大西 正太   2006/8/23
前のページ  1  2  3  4  次のページ
アーキテクチャの比較結果

   ここまで解説してきたことを比較すると、Railsでは「既存システムのテーブル構成の崩れ」や「今後フレームワークが衰退するリスク」といった、現在から未来にまたがる煩わしい問題を気持ちよく切り捨て、記述量を最小限に抑制できる方法を選んでいます。

   一方Java陣営では、ある程度の記述量がかかっても、これらの問題に柔軟に対応できる冗長な構成を選んでいます。

   世にある開発案件では、ゼロからテーブル設計ができるとは限りません。既存のシステムのDBを利用しながら開発するような状況では、Java陣営型のアーキテクチャの方が向いているでしょう。またフレームワークが衰退していくスパン(5〜10年程度)を超えてメンテナンスをしていくシステムにも、エンジニア確保の観点からJava陣営型のアーキテクチャが適しているといえるでしょう。

   逆に新規にテーブル設計から行える案件であり、5〜10年以内に全面リプレイスが予想されるシステムなど、開発効率が第一に求められるような案件ではRails陣営のアーキテクチャを用いた方が適していると考えられます。

マッピング記述の比較

   続いて、オブジェクトとテーブルの対応関係を紐付けるマッピング記述の比較をしていきましょう。

   Railsが提唱して以降、Convention over Configuration(CoC)というキーワードが非常に注目されています。CoCは「規約は設定に勝る」と訳され、端的にいうと命名規約によって設定ファイルなどのコードを削減するという考え方です。

   マッピング記述の分野にCoCを適用すると大幅なコード削減につながることが知られており、CoCへの対応はもっとも重要であるといっても過言ではありません。


ActiveRecordのマッピング記述

   ActiveRecordはCoCにのっとっており、規約に従うことでコードを削減するスタンスを取っています。ActiveRecordで決められているマッピング記述削減に関する規約(一部)は下記のようなものです。

  • クラス名をテーブル名の単数形にする
  • テーブルの主キーはIDという名称にし、数値連番を振るようにする
  • 外部キー名は「テーブル名」+「_」+「主キー名」とする

表2:マッピング記述削減に関する規約(一部)

   ActiveRecordを用いた場合のソースコードの例を以下に示します。

class Zoo < ActiveRecord::Base
     has_many :animals
end

   このように記述するだけでActiveRecordはZooクラスとZOOSテーブルを関連付け、データ操作できるようにし、さらにカラム名と同名のアクセッサメソッドを自動的にZooクラスに追加してくれています。また、has_many宣言(正確にはメソッド)によって関連を持つAnimalオブジェクトを取得するメソッドが動的に追加されます。

前のページ  1  2  3  4  次のページ


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


INDEX
第1回:O/Rマッピング
  はじめに
アーキテクチャの比較結果
  Hibernateのマッピング記述
  データ照会方式の比較
徹底比較!!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

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