TOP
>
システム開発
> アーキテクチャの比較結果
徹底比較!!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のマッピング記述
データ照会方式の比較