2013-05-15 3 views
0

Я создаю приложение 3-уровня, и у меня возникла проблема.
У меня есть база данных, в которой хранятся данные о клиентах и ​​классе, представляющем объект клиента в моем приложении. Проблема в том, что я не знаю, должен ли я создать экземпляр объекта клиента в Уровень данных или в Уровень приложения.Где я могу создать объекты из базы данных в трехуровневом приложении?

Создание лица клиента в ярусе Application кажется более правильным, поскольку уровень данных предполагается только запросить данные, но это означало бы, что мне нужно использовать «сырые/неотформатированные» данные в Уровень приложения, и это тоже не очень хорошо.

Кто-нибудь знает «правильный» способ справиться с этим?

ответ

1

База данных сохраняет состояние и перед тем, как его можно будет запросить, что sate необходимо сохранить. Новый объект клиента создается экземпляром приложения, а затем отправляется в Persistance для сохранения. Когда для приложения требуется определенный Клиент из db, Persistence (обычно репозиторий) восстанавливает клиента.

Обратите внимание, что Клиент является субъектом предприятия, связанным, но не идентичным с таблицей Customer или объектом ORM клиента, который представляет собой просто структуру данных, смоделированную с точки зрения базы данных, для оптимизации запросов.

+0

Итак, вы говорите, что я должен создать экземпляр клиента в Уровне приложений, когда он будет сохранен, и в Уровне данных, когда он будет восстановлен из db? – DeadlyJesus

+0

Я говорю, что новый клиент создается там, где он вам нужен, и в 99,99% случаев он вам понадобится в слое App, слой Data просто сохраняет/восстанавливает объекты. – MikeSW

+0

Да, но когда слой данных восстанавливает объект, он его создает, нет? Я имею в виду в моем классе связи db, мне нужно будет написать что-то вроде этого 'Customer c = new Customer (data);'. Или я должен поместить этот код на уровень приложения и использовать данные, которые я получил на уровне данных, что-то вроде этого: Data d = dbConnector.getCustomerData(); Клиент c = новый Клиент (d); '? – DeadlyJesus

 Смежные вопросы

  • Нет связанных вопросов^_^