ORM
Object Relation Mapper
ORMとはRDBMS(MySQLとか)からのクエリ結果をオブジェクトや構造体にマッピングするライブラリである
例えば、こういうSQLを発行するとこういう結果が返ってくる
code:q
select * from users where users.id = 1;
+ - + -------- + ----------------------- +
| id| username | email |
+ - + -------- + ----------------------- +
| 1 | keroxp | kerokerokerop@gmail.com |
+ - + -------- + ----------------------- +
これは一般的なRDBMSデータをテーブル(行の集まり)として管理しているからだ
各言語のデータベースドライバがデータベスにクエリを発行したときも、これと近い構造のデータが返ってくる
しかし、データベースはプログラミング言語の事など知らないので、返却したデータ構造がプログラムの中でどう扱われるかは知らない
だが、モダンなプログラミング言語ではこういった結果が返ってきても扱いづらい
列が3つ程度のテーブルならば問題ないが、10や20もあると手動でマッピングするのにも限界がある
そこで返ってきた行データから言語へのマッピングをするのがORMである
上記のデータは、例えばTypeScriptならば
code:ts
type User = {
id: number
username: string
email: string
}
こういうデータになるし、Goならば
code:go
type User struct {
Id int
Username string
Email string
}
こうなる
こういうデータを定義しておいたらクエリの結果を自動的にマッピングしたいわけだが、そこにはいろいろな難しさがある