誰かが私が設計しているプロジェクトにORMを使用することを提案しましたが、それが何であるか、またはそれがどのように機能するかについての情報を見つけるのに苦労しています。
ORMとは何か、それがどのように機能するのか、そしてどのようにORMを使い始める必要があるのかについて誰かに簡単な説明を教えてもらえますか?
誰かが私が設計しているプロジェクトにORMを使用することを提案しましたが、それが何であるか、またはそれがどのように機能するかについての情報を見つけるのに苦労しています。
ORMとは何か、それがどのように機能するのか、そしてどのようにORMを使い始める必要があるのかについて誰かに簡単な説明を教えてもらえますか?
回答:
オブジェクトリレーショナルマッピング(ORM)は、オブジェクト指向のパラダイムを使用して、データベースからデータを照会および操作できるようにする手法です。ORMについて話すとき、ほとんどの人はオブジェクトリレーショナルマッピング手法を実装するライブラリを参照しているため、「an ORM」というフレーズを使用します。
ORMライブラリは、選択した言語で記述された完全に通常のライブラリであり、データの操作に必要なコードをカプセル化するため、SQLを使用しなくなります。使用しているのと同じ言語のオブジェクトを直接操作します。
たとえば、これは疑似言語を使用した完全に架空のケースです。
本のクラスがあり、著者が "Linus"であるすべての本を取得したいとします。手動で、あなたはそのようなことをするでしょう:
book_list = new List();
sql = "SELECT book FROM library WHERE author = 'Linus'";
data = query(sql); // I over simplify ...
while (row = data.next())
{
book = new Book();
book.setAuthor(row.get('author');
book_list.add(book);
}
ORMライブラリを使用すると、次のようになります。
book_list = BookTable.query(author="Linus");
機械部品はORMライブラリを介して自動的に処理されます。
ORMを使用すると、次の理由により多くの時間を節約できます。
ORMライブラリの使用は、次の理由により、より柔軟です。
しかし、ORMは苦痛になる可能性があります。
for
ループでの大ヒットのように、非常に貪欲なステートメントを書くことができる新しいプログラマーにとっては罠です。まあ、それを使用してください。どちらのORMライブラリを選択しても、それらはすべて同じ原則を使用します。このあたりにはたくさんのORMライブラリがあります:
WebプログラミングでORMライブラリを試したい場合は、次のようなフレームワークスタック全体を使用したほうがよいでしょう。
何かを学ぼうとしているのでない限り、自分でORMを書こうとしないでください。これは膨大な作業であり、古いものは信頼できるようになるまでに多くの時間と作業を要しました。
誰でも簡単に説明してくれますか...
承知しました。
ORMは「オブジェクトからリレーショナルへのマッピング」の略です。
オブジェクトの一部は、あなたのプログラミング言語(この場合のpython)を使用するものです
リレーショナル部分はリレーショナルデータベース管理システム(あるデータベース)は、データベースの他の種類があるが、最も人気がリレーショナルである(あなたが知っている、テーブル、カラム、PK FKなどなどのOracleのMySQL、MS-SQL)
最後に、マッピングパーツは、オブジェクトとテーブルの間のブリッジを行う場所です。
ORMフレームワークを使用しないアプリケーションでは、これを手動で行います。ORMフレームワークを使用すると、ソリューションの作成に必要な定型文を減らすことができます。
このオブジェクトがあるとしましょう。
class Employee:
def __init__( self, name ):
self.__name = name
def getName( self ):
return self.__name
#etc.
とテーブル
create table employee(
name varcar(10),
-- etc
)
ORMフレームワークを使用すると、そのオブジェクトをdbレコードに自動的にマッピングし、次のように記述できます。
emp = Employee("Ryan")
orm.save( emp )
そして、従業員にDBを挿入してもらいます。
おっと、それは簡単ではありませんでしたが、あなたが読んだ他の記事をキャッチするのに十分簡単であることを願っています。
ORM(Object Relational Mapper)は、コードオブジェクトをデータベースにマップするのに役立つソフトウェアの一部/レイヤーです。
他の側面よりも多くの側面を処理するものもありますが、その目的は、開発者の肩からデータレイヤーの重みの一部を取り除くことです。
これは、Martin Fowler(Data Mapper)からの短いクリップです。
すべての頭字語と同様、あいまいですが、私はそれらがオブジェクトリレーショナルマッパーを意味していると思います。もちろん、本当ではありませんし、問題がないわけではありません。常にカラフルなJeff Atwoodは、ORM をCSのベトナムと表現しています;-)。しかし、SQLをほとんどまたはまったく知らず、かなり単純で小規模な問題がある場合は、時間を節約できます!-)