ORMとは
nORM(Object Relational Mapping)は、データベースをオブジェクト指向プログラミング言語(Java、C#など)のオブジェクトにマッピングするプログラミング技術または仕組みで、テーブルは対応するクラスで、テーブル間の関係はクラス間の関係(’has a’、’is a’など)として表現されます。nnORMを使用することで、プログラマーはデータベースと自然な形で対話し、オブジェクトを介してデータベースを理解できます。プログラマーはデータベースの種類やデータベース内のデータ型に詳しくなる必要はありません。nn単純に言えば、ORMはプログラミングの中でデータベースの行(レコード)をプログラミング言語のオブジェクトに対応付ける技術であり、これによりデータレコードをオブジェクトのように操作および処理できます。ORMは、データベース内のレコードをオブジェクトに変換し、ユーザーがプログラミング言語のオブジェクトと同様にデータレコードと対話できるようにする魔法の杖のようなものです。nn
n
ORMにはどのような利点と欠点がありますか。
n利点n
-
- n
- 簡潔さ: ORMはユーザーが簡潔かつシンプルな構文で好きなプログラミング言語を使用できるようにし、SQL文を使用するよりもコードの量を減らすのに役立ちます。
n
-
- 最適化: ORMは、オブジェクト指向プログラミングの特性であるデータの継承、カプセル化、抽象化を利用できるようにし、データベース内のレコードをオブジェクトとして表現します。
n
-
- 柔軟性: ORMを使用すると、さまざまなデータベース管理システム(MySQL、Sqlite3、PostgreSQLなど)間を柔軟に切り替えることができ、これらのシステムやSQL言語について詳しくなる必要はありません。
n
n欠点n
-
- n
- 時間: ORMはフレームワークであるため、ユーザーはこれらのフレームワークの使用方法を学び、習熟するために時間を費やす必要があります。
n
-
- 主導権の喪失: ORMを使用すると、データベースに対するユーザーの制御や監視が少なくなります。
n
n
n
どのような種類のORMがありますか。
n 広く知られている2つのORMデザインパターンは、Active RecordとData Mapperです。 nn
n
Active Record
nActive Recordは、データベース内の各テーブルがモデル内にカプセル化されるORMデザインパターンです。したがって、モデルに属する各オブジェクトは、テーブル内のレコードに関連付けられます。Active Recordを使用すると、モデル内でモデルのプロパティやそれらのプロパティのデータベースへの関連付けを明示的に記述する必要はありません。オブジェクトはデータベーススキーマを参照してこれらの情報を自動的に取得します。また、Active Recordを使用するORMは、save()、create()などのCRUD(Create – Read – Update – Delete)メソッドを提供し、オブジェクトの生成を容易にします。nnActive Recordを使用する有名なORMには、Eloquent、Ruby on Rails、DjangoのORM、Yiiなどがあります。Active Recordモデルは、特定のテーブル構造に従う必要があり、例えばここでのPersonモデルは、Personテーブル内のfirst_name、last_name、phone_numberの3つの列を持たなければなりません。n
Data Mapper
n Active Recordとは異なり、Data Mapperデザインパターンを使用するORMは、オブジェクトをデータベースのレコードに直接関連付けるのではなく、ORMはアプリケーションとデータベース間でデータの双方向転送を担当する層のように機能します。これは、アプリケーション内のオブジェクトがデータベースやモデルのプロパティについて何も知らないことを意味します。作成されたオブジェクトはデータベースの存在や、逆にデータベースの情報を知りません。nnData Mapperデザインパターンを使用する有名なORMには、Doctrine、Hibernate、SQLAlchemyなどがあります。