1

私は DBIx クラスを勉強していますが、これまでのデータベースとの対話は PHP コードでの単純な SQL クエリだったので、少し混乱しています。

とにかく、私が理解しているように、クラスはデータベースと直接対話するのではなく、結果クラスで定義されたスキーマで動作します。スキーマは、さまざまな .pm クラスを介して手動で構築するか、Loader クラスを介してデータベースから取得することができます。

私の質問は次のとおりです。これに対する好ましいアプローチは何ですか? 結果クラスを手動で構築してからデータベースを変更するとどうなりますか? テーブルとクラスの両方を編集する必要があると思いますが、少し非現実的ではありませんか?

ありがとう

4

1 に答える 1

1

DBIx::Class のようなオブジェクト リレーショナル マッピング システムを使用する際の問題の 1 つは、テーブル クラスをスキーマで最新の状態に保つ必要があることです。通常、あちこちにフィールドを追加するのと同じくらい簡単で、たまに新しい外部キー関係を追加することもあります。コードをバージョン管理している場合は、比較的簡単に追跡できます。

2 つの場所で同じもの (DB スキーマ) を維持することの欠点よりも、ORM システムを導入することの利点の方が勝っています (IMHO)。DBIx::Class クエリとその ResultSets の操作に慣れると、常に生の DBI 呼び出しを書くよりもはるかに高速になります。

個人的には、Loader クラスはうまくいきませんでしたが、それらを試してからかなりの時間が経ちました。それらが機能する場合は、コードでスキーマ定義を手動で維持するよりもおそらく簡単です。一方で、これに必要なわずかな労力に悩まされたことは一度もありません。システムが起動して実行されると、データベース スキーマはあまり頻繁に変更されない傾向があります。

于 2009-11-02T15:25:49.797 に答える