Ваш Data Access Layer
может использовать ORM
инструмент (например, Hibernate (Java), NHibernate (.Net)), чтобы сделать доступ к базе данных , Нет проблем с этим. Вы могли бы абстрагировать funcionalities в модели слоя и реализовать его на DAL проекта, для образца:
public interface ICustomerPersistence
{
Customer Get(int id);
bool Save(Customer customer);
}
и реализовать его с помощью ОРМ или другой способ доступа к базе данных (ADO.NET или JDBC).
Используя инструмент ORM, у вас будет внутренний слой между вашим приложением и базой данных. С другой стороны, инструмент ORM может предоставить вам и вашей команде некоторые продуктивные сохраняющиеся объекты вместо написания SQL-запросов. В обоих случаях SQL должен быть чистым, чтобы обеспечить производительность. С инструментами ORM, вероятно, вам понадобится инструмент трассировки, чтобы увидеть команды SQL, созданные ORM. Для NHibernate существует NHProf.
Для второго вопроса, как вы должны реализовать. Большинство реализаций ORM, таких как Hibernate/NHibernate, контролируют объект ISession с верхнего уровня из DAL. Для примера, как хорошая оценка в веб-приложениях, ISession открывается в запросе на начало и закрывается в конец запроса. Иногда это также делает транзакция.
Спасибо @felipe, я отредактировал первый вопрос для большей ясности. –
Я добавляю еще немного контента. В любом случае, я рекомендую вам реализовать свой DAL с помощью инструмента ORM, но убедитесь, что вы знаете, что происходит, когда вы используете ORM. Не забудьте проверить, является ли это anwser, если он поможет вам найти решение. –