良い習慣は、テーブルごとにクラスを作成することで構成されますか?もしそうなら、そのようなクラスをormなしでデータベースにロード/保存するためのベストプラクティスは何ですか?
ORMを使用しています。オブジェクトをリレーショナルテーブルにマッピングしています。事前に構築されたライブラリを使用するかどうかは、あなたの要求です。そうしないと、基本的に自分で実装することになりますが、おそらく既存のORMのすべての機能はありません。
これを行う最も一般的な2つの方法は、ActiveRecordパターンとデータマッパーパターンです。それぞれに長所と短所があります。
ActiveRecordパターンを使用して、テーブル列を定義する属性を持つクラスを定義します。このクラスの各インスタンスはデータベースの行に対応し、新しいインスタンスを作成(および保存)することで、データベースに新しい行を作成します。詳細については、http: //en.wikipedia.org/wiki/Active_record_patternを参照してください。
データマッパーパターンでは、テーブルごとにテーブルオブジェクトを定義し、テーブルの列を既存のクラスに割り当てるマッパー関数を記述します。SQLAlchemyはデフォルトでこのパターンを使用します(ただし、SQLAlchemyの機能を別のインターフェイスに適応させるActiveRecordタイプの拡張モジュールがあります。このパターンの簡単な紹介は、SQLAlchemyのドキュメント(http://www.sqlalchemy.org/docs/ )にあります。 05 / ormtutorial.html(「テーブル、クラス、マッパーを一度に宣言的に作成する」というタイトルのセクションまで、最初から読んでください。このセクションでは、SQLAlchemyを使用したActiveRecordについて説明しています)。
ActiveRecordパターンは、セットアップと操作が簡単で、データベースを明確に表すクラスを提供します。これには、読みやすさの点で利点があります。副次的な利点として、ActiveRecordクラスの宣言型の性質は、データベーススキーマの明確でわかりやすいドキュメントとして効果的に機能します。
データマッパーパターンを使用すると、データをクラスにマップする方法がはるかに柔軟になるため、テーブルとクラスの間の1対1の関係に縛られることはありません。また、永続層をビジネスコードから分離します。つまり、必要に応じて、後で他の永続メカニズムを交換できます。また、クラスをバックアップするためにデータベースを設定しなくても、クラスをより簡単にテストできることも意味します。
SQLAlchemyのマッパー構成の詳細については、http://www.sqlalchemy.org/docs/05/mappers.htmlを確認してください。SQLAlchemyのようなライブラリを使用する予定がない場合でも、ドキュメントは、クラスをデータベーステーブルにマッピングする際に検討する可能性のあるいくつかのオプションを確認するのに役立ちます。