ここでは、それを明確にするのに役立ついくつかの考えがあります。私はSequelizeよりもActiveRecordに精通しているので、私はそれを実行しますが、その概念は両方で同じでなければなりません。
データベースがあります。 Railsとは完全に独立していて(例えば、データベース管理ツールを使用して)、"select * from users limit 1"
のようなデータベースに問い合わせて実行することができます。しかし、これはちょうどあなたのRailsアプリケーションにあまり役に立たないいくつかの管理ウィンドウの結果のセットを提供します。 RailsアプリケーションからSQLを実行し、Ruby/Railsが動作できる形式でデータを取得できるようにします。 Data
ルビのいくつかの種類Object
- あなたはData Access Object
、またはDAO
が必要です。
はレールでは、あなたのような何かを上記のクエリを実行できます。
result = ActiveRecord::Base.connection.execute("select * from users limit 1")
result
変数が知っているか、あなたのUser
モデルを気にしないだろう。それが含まれていますすべてが同じように、基本的に平野ルビーHash
インスタンスのリストです:あなたはfirst_name
Bob
に、あなただけのそのハッシュを編集し、それに対してsaveを呼び出すことができませんでした更新したい場合は
{
"id" => "1234",
"email" => "[email protected]",
"first_name" => "Fred",
"last_name" => "Flintstone",
}
- それだけです単純な古いハッシュ、ちょうどデータと余分なスマート。だから、もう一度、独自のSQLを書き、Railsはあなたのためにそれを実行するために取得する必要があるだろう:
ActiveRecord::Base.connection.execute("update users set first_name = 'Bob' where id = 1234")
それでは、あなたは、この文脈で使用していること、それはORM
だ使用しなくても、基本的には鉄道のDAO
です。
ORM
は、DAO
の上のレイヤーのようなものです。 ORM
のないDAO
を使用できますが、のないORM
は使用できません。 ORM
、またはObject Relational Mapper
はRelational
データベースのMap
という概念/レコードになります。Objects
のプログラミング言語(つまりRuby)です。あなたはレールのORM
むしろそれはDAO
だ使用するよりもを使用して、上記のものをやってみたかったのであれば、それは次のようになります。
user = User.find(1234)
user.name = 'Bob'
user.save!
は、ORMを使用しているどのくらいの立派参照してください?ORMを使用した上記のスニペットは、本質的に前に説明したのと同じSQLを実行します。 ORMは、より多くの細部を抽象化し、賢いオブジェクトを提供して、余分な作業を私たちに救います。
は再び、実証された概念はSequelize/Javascriptと他のlangs /フレームワークに譲渡されています。
のでDAO
は単に「SQLを実行し、プログラミング言語に固有のいくつかの基本的なデータ構造に結果を返すことができるオブジェクト」です。 ORM
は、最終的にはデータベースとの通信にDAO
を使用しますが、上に全体の多くを提供しています。 `/:Sequelize.jsは` DAO`言及[具体例](http://docs.sequelizejs.com/manual/tutorial/models-usage.html#raw-queries)である
"生の問合せ" /あなたは// 、DBからの大規模なデータセットを期待しているし、各エントリのタイム建物のDAOを過ごすためにしたくないですか? Project.findAll({::{...}、生:真}) ' –