классовая обертка для базы данных

elenangel

есть база данных database с набором таблиц table1, table2, ...
хочется для каждой таблицы сделать соответствующий класс.
есть 2 варианта:
первый вариант:
  
// для каждой таблицы создается класс
T<TableName> = class
property Field1;
property Field2;
....... // остальные поля
procedure Load;
procedure SaveAsNewRecord;
procedure UpdateExistingRecord;
procedure DeleteRecord;
end;

второй вариант:
 
// для каждой таблицы создается класс
T<TableName> = class
property Field1;
property Field2;
....... // остальные поля
end;

// и создается еще один общий класс c набором методов 4*количество таблиц

TDataBase = class
procedure Load_<TableName>(var ClassInstance);
procedure SaveAsNewRecord_<TableName>(var ClassInstance);
procedure UpdateExistingRecord_<TableName>(var ClassInstance);
procedure DeleteRecord_<TableName>(var ClassInstance);
end;

я склоняюсь к первому варианту, коллега ко второму. его обоснование "потому что так сделано в Hibernate". мне не нравится класс TDataBase который меняется при добавлении или удалении новых классов. вероятно плюсы и минусы есть в обоих вариантах. хочется услышать ваше мнение о том какой из 2 вариантов лучше, да и вообще стоит ли делать классовую обертку или сейчас есть другие способы. язык на котором будет реализовываться -php 5.

yroslavasako

ты уверен, что не изобретаешь велосипед?
http://www.google.ru/search?q=php+database+persistence+objec...

katrin2201

Как правило, дата акссес код стараются изолировать в одном месте. Это относится не только к примитивным CRUD операциям, но и к каким-нибудь извратно-специфическим селектам.
Делать этим местом модельные классы - в общем случае плохая идея, правильным модельным классам должно быть пофиг где они хранятся, и как оттуда достаются.
Под это дело человечество придумало кучу паттернов, эту кучу можно нагуглить по словам Data Access Object (DAO DAO layer.
С первого взгляда это покажется некоторым избыточным гемором. Возможно и так, зато изменения в такой код вносить будет гораздо проще. Если не верите - предлагаю прочувствовать на собственной шкуре =)
Хотя, есть конечно другое решение, как подсказывает выше. Странно, что вы в курсе про хибернейт, и тем не менее не хотите пользоваться похожими вещами в пхп.
да и вообще стоит ли делать классовую обертку или сейчас есть другие способы
другие способы чего?

elenangel

похоже ты прав и мы изобретаем велосипед =) более того, уже изобрели практически.
спасибо, в надежде на такую ссылку я и начал этот тред

elenangel

другие способы натянуть набор классов на данные в базе я имел ввиду

Bayur19

http://www.google.ru/search?hl=ru&q=php+dao -море ссылок по теме :)
Оставить комментарий
Имя или ник:
Комментарий: