помогите с реализацией сложного объекта

Духовность™

Продвинутый новичок
помогите с реализацией сложного объекта

DataMapper я использовал успешно до тех пор, пока не столкнулся с тем, что объект может и должен содержать в себе другие объекты. Если говорить более конкретно, на примере - то у меня стоит задача создать систему публикаций резюме. Хоть резюме и является единственным объектом в реальном мире, у меня резюме должно быть разбито на объекты-составляющие:

- массив (объектов) типа образование (перечень учебных заведений, года учебы, etc)
- массив (объектов) типа стаж (перечень рабочих мест, года работы, etc)

Вот тут мне не понятно, как правильно реализовать взаимодействие объект-база? Нужно ли для каждого составляющего объекта делать свой маппер или ограничиться одним меппером для всего объекта резюме? В общем, я пока в полном тупике. Как это обычно делаете вы?

-~{}~ 12.03.09 11:11:

можете ткнуть в определенную главу фаулера, я пока в книшке этой не нашел то, что мне надо :)
 

whirlwind

TDD infected, paranoid
Хорошо что ты сказал для чего тебе это нужно. Ты реально думаешь, что работадатель или ктото-там будут искать сотрудников именно которые учились в твику или работали с вчера по сегодня в фирме рога и копыта?
 

Духовность™

Продвинутый новичок
whirlwind
Эээ... не понял. У меня есть техзадание. Мне по барабану что они там будут искать, мне сделать надо) Или я что-то не понял?
 

Духовность™

Продвинутый новичок
table_resume
table_resume_educations
table_resume_work

последние 2 таблицы имеют внешние ключи на первичный ключ table_resume
 

john.brown

просто кулибин
ИМХО, отдельными мапперами на каждую таблицу. Но маппер резюме должен знать, что у резюме есть поля, которые является коллекциями объектов, и какие мапперы их обслуживают.
 

atv

Новичок
Теоретически, в классе модели описаны свойства как связи на другие объекты/коллекции, и при обращении к этим свойствам происходит подгрузка данных из БД (если они не были подгружены ранее)
 

Lightning

Трудоголик
Я скорее всего сделал бы одним маппером. Маппер делает селект с JOIN-ами, получает данные, потом создает объекты, передавая данные в конструкторы, связывает объекты и отдает одним объектом (внутри которого содержаться объекты-составляющие). Но это первое, что пришло в голову. Не знаю какие у тебя там нюансы.

-~{}~ 13.03.09 00:42:

triumvirat
Нескромный вопрос: а ты вообще уверен, что тебе резюме нужно в виде объекта с объектами-составляющими? Что ты с ними делаешь, после того как создал?
 

Духовность™

Продвинутый новичок
atv
а как подгрузка может происходить, если обычнго SQL абстрагируют от объектов домена?

Lightning
Нескромный вопрос: а ты вообще уверен, что тебе резюме нужно в виде объекта с объектами-составляющими?
ты к чему клонишь?
 

atv

Новичок
а как подгрузка может происходить, если обычнго SQL абстрагируют от объектов домена?
В LightOrm через коллекцию, а уже коллекция выполняет SQL. В твоём случае, вероятно через маппер для table_resume_work, к примеру. А вообще, посмотри как сделано в ezc. Там ДатаМаппер реализован в чистом виде и довольно таки понятно.
 

Lightning

Трудоголик
ты к чему клонишь?
Мне почему-то кажется, что тебе не нужны эти объекты. Вот достал ты резюме из базы, и что ты потом с ним делаешь, перед тем как данные в view переслать?
 

whirlwind

TDD infected, paranoid
Автор оригинала: Lightning
Мне почему-то кажется, что тебе не нужны эти объекты. Вот достал ты резюме из базы, и что ты потом с ним делаешь, перед тем как данные в view переслать?
работадатель или ктото-там будут искать сотрудников именно которые учились в твику или работали с вчера по сегодня в фирме рога и копыта
 
Сверху