Будет ли хорошая практика состоять из
создать класс для каждой таблицы? Если
Итак, каковы лучшие практики для
загрузка / сохранение таких классов обратно в
база данных без орма?
Вы используете ORM. Вы отображаете объекты в реляционные таблицы. Используете ли вы готовую библиотеку для этого или нет - ваш вызов. Если вы этого не сделаете, вы по существу будете реализовывать его самостоятельно, хотя, вероятно, безо всяких наворотов существующих ORM.
Два наиболее распространенных способа сделать это - шаблон ActiveRecord и шаблон Data Mapper. У каждого есть свои преимущества и недостатки.
С помощью шаблона ActiveRecord вы определяете классы, атрибуты которых определяют столбцы таблицы для вас. Каждый экземпляр этого класса соответствует строке в базе данных, и, создав (и сохранив) новый экземпляр, вы создадите новую строку в базе данных. Более подробная информация об этом доступна здесь: http://en.wikipedia.org/wiki/Active_record_pattern
В шаблоне Data Mapper вы определяете объекты таблицы для каждой таблицы и пишете функции отображения, которые присваивают столбцы таблицы существующим классам. SQLAlchemy использует этот шаблон по умолчанию (хотя существуют модули расширения типа ActiveRecord, которые адаптируют функциональность SQLAlchemy к другому интерфейсу. Краткое введение в этот шаблон можно найти в документации по SQLAlchemy здесь: http://www.sqlalchemy.org/docs/05/ormtutorial.html (прочитано с самого начала) к разделу, озаглавленному «Декларативное создание таблицы, класса и сопоставителя одновременно, но не включающему этот раздел» (в этом разделе описывается ActiveRecord с использованием SQLAlchemy).
Шаблон ActiveRecord проще в настройке и работе, и он дает вам классы, которые четко представляют вашу базу данных, что имеет преимущества с точки зрения читабельности. Дополнительным преимуществом является то, что декларативный характер классов ActiveRecord эффективно выступает в качестве четкой и понятной документации для вашей схемы базы данных.
Шаблон Data Mapper дает вам гораздо больше гибкости в том, как ваши данные отображаются в ваши классы, поэтому вы не привязаны к более или менее однозначному отношению между таблицами и классами. Он также отделяет ваш уровень персистентности от вашего бизнес-кода, что означает, что вы можете при необходимости заменить другие механизмы персистентности позже. Это также означает, что вы можете легче тестировать свои классы без необходимости создавать базу данных для их поддержки.
Для более подробного обсуждения конфигурации картографа в SQLAlchemy, посмотрите http://www.sqlalchemy.org/docs/05/mappers.html. Даже если вы не планируете использовать такую библиотеку, как SQLAlchemy, документация должна помочь вам увидеть некоторые параметры, которые вы можете рассмотреть в отображении ваших классов в таблицы базы данных.