だから我々は最初のORMが何であるかを知っている必要があります
ビューのプロポイント:オブジェクト・リレーショナル・マッピング(オブジェクト関係マッピング)と呼ばれる既存のオブジェクト指向とリレーショナルデータベース技術を解決するために一致しない現象です。
?その特定のORMは、それは:(ジャンゴでは、コードが自動的に生成されたテーブルクラスは、第1)ORMを--codeに従ってデータベースは何と呼ばれているされています。
ギャップを埋めるためのオブジェクト指向モデルとリレーショナル・モデルとの間のORM。
オブジェクトとデータベースとの間のメタデータのマッピングによって、リレーショナル・データベースへの音声オブジェクトの永続性を自動的かつ透過的に、コンパイラは、データベース操作は、オブジェクトに対する操作に変換することができます。
ORMは、これらの利点を持っています。
- データモデルを更新し、保守が容易、一つの場所で定義されている、だけでなく、コードの再利用を助長しています。
- 利用可能ORMツールは、多くの機能は、そのようなので、上のデータのサニタイズ、前処理、トランザクションとして、自動化することができます。
- それは、ORMは、最終的にコードをより明確に、自然なモデルであるあなたはMVCアーキテクチャを使用することを強制します。
- ORMベースのビジネスコード、少ないコード、意味、理解しやすい比較的簡単です。
- あなたは、パフォーマンスの低いSQLを記述する必要はありません。
しかし、ORMはまた、非常に顕著な欠点です。
- ORMライブラリは、それが学ぶための努力と多くの設定を取り、軽量なツールではありません。
- 複雑なクエリ、ORM又はためのいずれかの発現ネイティブSQLと同様に行うことができません。
- ORMデータベース層を抽象化、開発者は、いくつかの特別なSQLをカスタマイズすることはできません基礎となるデータベース操作を理解することはできません。
Djangoの不活性メカニズム
いわゆる不活性メカニズム:Publisher.objects.all()または.filter()は、これだけクエリセット(クエリ結果セットオブジェクト)を返し、それは直ちにSQL実行するが、唯一のクエリセットを呼び出すときに実行されません。
不活性機構は、反復してもよいです
1
2
3
|
# objs=models.Book.objects.
all
() # [obj1,obj2,ob3...]
#
for
obj
in
objs: # 每一obj就是一个行对象,此时会执行sql
# print(
"obj:"
,obj)
|
不活性メカニズムをスライスすることができます
1
2
3
4
|
# objs=models.Book.objects.
all
() # [obj1,obj2,ob3...]
# print(objs[1])
# print(objs[1:4])
# print(objs[::-1])
|
キャッシングの問題のメカニズムの不活性ジャンゴ
Djangoは、オブジェクトがキャッシュから直接値の値を確認するために、二回二時間をobjを同じ場合は、独自のキャッシュを持っています。
データベースの変更の内容は中に行われた場合は、再チェック値にする必要があります。そうでなければ簡単に汚れたデータにつながります。
それはまた、手動で再クエリの結果とすることができるが、これは推奨されない;直接ので、次のサイクルタイムと再度実行クエリデータベースクエリ操作のために、この時間は、キャッシュも変更を加え、オブジェクトobjが直接操作を更新する最初の時間のために使用することができますデータは、データクエリのデータ結果を使用するために適切またはジャンゴ自身変更されるときに我々は知らないので、
データは、2つの操作の間に変更された場合、データベースから再チェック値に対する必要性が、そうでなければDjangoは、キャッシュからデータを削除する最終結果に影響を与えます。
ビューのプロポイント:オブジェクト・リレーショナル・マッピング(オブジェクト関係マッピング)と呼ばれる既存のオブジェクト指向とリレーショナルデータベース技術を解決するために一致しない現象です。
?その特定のORMは、それは:(ジャンゴでは、コードが自動的に生成されたテーブルクラスは、第1)ORMを--codeに従ってデータベースは何と呼ばれているされています。
ギャップを埋めるためのオブジェクト指向モデルとリレーショナル・モデルとの間のORM。
オブジェクトとデータベースとの間のメタデータのマッピングによって、リレーショナル・データベースへの音声オブジェクトの永続性を自動的かつ透過的に、コンパイラは、データベース操作は、オブジェクトに対する操作に変換することができます。
ORMは、これらの利点を持っています。
- データモデルを更新し、保守が容易、一つの場所で定義されている、だけでなく、コードの再利用を助長しています。
- 利用可能ORMツールは、多くの機能は、そのようなので、上のデータのサニタイズ、前処理、トランザクションとして、自動化することができます。
- それは、ORMは、最終的にコードをより明確に、自然なモデルであるあなたはMVCアーキテクチャを使用することを強制します。
- ORMベースのビジネスコード、少ないコード、意味、理解しやすい比較的簡単です。
- あなたは、パフォーマンスの低いSQLを記述する必要はありません。
しかし、ORMはまた、非常に顕著な欠点です。
- ORMライブラリは、それが学ぶための努力と多くの設定を取り、軽量なツールではありません。
- 複雑なクエリ、ORM又はためのいずれかの発現ネイティブSQLと同様に行うことができません。
- ORMデータベース層を抽象化、開発者は、いくつかの特別なSQLをカスタマイズすることはできません基礎となるデータベース操作を理解することはできません。
Djangoの不活性メカニズム
いわゆる不活性メカニズム:Publisher.objects.all()または.filter()は、これだけクエリセット(クエリ結果セットオブジェクト)を返し、それは直ちにSQL実行するが、唯一のクエリセットを呼び出すときに実行されません。
不活性機構は、反復してもよいです
1
2
3
|
# objs=models.Book.objects.
all
() # [obj1,obj2,ob3...]
#
for
obj
in
objs: # 每一obj就是一个行对象,此时会执行sql
# print(
"obj:"
,obj)
|
不活性メカニズムをスライスすることができます
1
2
3
4
|
# objs=models.Book.objects.
all
() # [obj1,obj2,ob3...]
# print(objs[1])
# print(objs[1:4])
# print(objs[::-1])
|
キャッシングの問題のメカニズムの不活性ジャンゴ
Djangoは、オブジェクトがキャッシュから直接値の値を確認するために、二回二時間をobjを同じ場合は、独自のキャッシュを持っています。
データベースの変更の内容は中に行われた場合は、再チェック値にする必要があります。そうでなければ簡単に汚れたデータにつながります。
それはまた、手動で再クエリの結果とすることができるが、これは推奨されない;直接ので、次のサイクルタイムと再度実行クエリデータベースクエリ操作のために、この時間は、キャッシュも変更を加え、オブジェクトobjが直接操作を更新する最初の時間のために使用することができますデータは、データクエリのデータ結果を使用するために適切またはジャンゴ自身変更されるときに我々は知らないので、
データは、2つの操作の間に変更された場合、データベースから再チェック値に対する必要性が、そうでなければDjangoは、キャッシュからデータを削除する最終結果に影響を与えます。