Усилия, потраченные на разработку, внедрение и поддержку CRUD - PullRequest
3 голосов
/ 28 октября 2008

Какой процент ваших общих усилий по разработке вы тратите на внедрение и поддержку простых методов создания, чтения, обновления и удаления (CRUD) на уровне доступа к данным?

Приводит ли переход на ORM, такой как Hibernate или Entity Framework, к значительной экономии? Есть ли какие-то запахи в дизайне, о которых вам следует знать, если переход на ORM для вашего уровня доступа к данным является хорошим выбором?

С уважением, Ashish

1 Ответ

5 голосов
/ 28 октября 2008

Недавно потратив смешное количество часов (вероятно, порядка 40%), дублируя то, что ORM сделал бы за считанные минуты, я должен сказать, что всякий раз, когда вы можете позволить хорошо протестированным платформам генерировать (и поддерживать!) Базовый CRUD операции, ДАВАЙТЕ ЭТО СДЕЛАТЬ!

Позвольте каркасу сделать то, в чем он превосходит. Потратьте свое время на часть приложения, которая действительно добавляет ценность, бизнес-проблему, которую вы решаете. Только когда фреймворк терпит неудачу, вы действительно можете обойти его. «Пропуск» может включать производительность, но обычно в рамках есть «зацепки и ручки», которые позволяют вам делать то, что вам нужно для выполнения.

Запах реализации / проектирования: Когда вы в 40-й раз закодировали StoredProcedureWrapper или внедрили кэширование результатов запроса путем захвата выходных данных DAO, вы могли / должны использовать ORM

С фреймворком типа Ruby / Rails или Groovy / Grails я не вижу реальной причины НЕ начинать со слоя ORM, поскольку обе среды генерируют для вас Домен.

В Spring / Hibernate это немного сложнее, но все же экономит много ручного кодирования очень похожих небольших классов.

Я также обнаружил в нескольких проектах за последние 10 лет или около того, что, если мы не начали использовать ORM, мы закончили разработку или «кражу» JDBC-фреймворков или другого кода скаффолдинга, который снова дублирует многое из того, что ORM может получить вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...