誰かが、私が設計しているプロジェクトにORMを使用することを提案しましたが、それが何であるか、またはどのように機能するかについての情報を見つけるのに苦労しています。
ORMとは何か、どのように機能し、ORMの使用を開始する方法について簡単に説明できますか?
オブジェクトリレーショナルマッピング (ORM)は、オブジェクト指向のパラダイムを使用して、データベースのデータをクエリおよび操作できる技術です。 ORMについて話すとき、ほとんどの人はオブジェクトリレーショナルマッピング手法を実装するlibraryを参照しているため、「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
ループでの大ヒットのように、非常に貪欲なステートメントを書くことができる新しいプログラマーのtrapです。さて、使用してください。どちらのORMライブラリを選択しても、それらはすべて同じ原則を使用します。ここには多くのORMライブラリがあります。
WebプログラミングでORMライブラリを試してみたい場合は、次のようなフレームワークスタック全体を使用することをお勧めします。
何かを学ぼうとしているのでない限り、独自のORMを書こうとしないでください。これは巨大な作業であり、古いものは信頼できるようになるまでに多くの時間と作業を要しました。
誰でも簡単な説明をくれますか...
確かに。
ORMは「Object to Relational Mapping」の略で、ここで
Object部分は、プログラミング言語で使用する部分です(この場合はpython)
Relationalの部分はリレーショナルデータベースマネージャーシステム(データベース)です。他の種類のデータベースもありますが、最も一般的なのはリレーショナルです(テーブル、列、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(オブジェクトリレーショナルマッパー)は、コードオブジェクトをデータベースにマップするのに役立つソフトウェアの一部/レイヤーです。
一部のものは他のものよりも多くの側面を処理します...しかし、目的は、開発者の肩からデータ層の重みを取り除くことです。
以下は、Martin Fowler(データマッパー)の簡単なクリップです。
すべての頭字語と同様に曖昧ですが、私は object-relational mapper -が目を覆い、その下にSQLが存在しないと信じる方法を意味すると仮定します;-)。もちろん、本当ではなく、問題もありません。常にカラフルなジェフアトウッドは、ORMを CSのベトナム ;-)と表現しています。しかし、SQLをほとんどまたはまったく知らず、非常に単純で小規模な問題がある場合、時間を節約できます!-)
オブジェクトモデルは、次の3つの概念に関係します。データ抽象化カプセル化の継承リレーショナルモデルは、リレーションまたはテーブルの基本概念を使用しました。オブジェクトリレーショナルマッピング(ORマッピング)製品は、オブジェクトプログラミング言語の機能をリレーショナルデータベースと統合します。
Storm は、Pythonを使用している人に最適なオプションです。
これは大きなトピックです。良い休止状態の本を手に入れてください。それは、非常にざらざらした休止状態の資料に到達する前に、ORMを詳細に説明する必要があります。
DALMP http://code.google.com/p/dalmp/ は、現在redis/memcache/apcのような多くのキャッシュバックエンドをサポートしているphp/mysqlに適している可能性があります