Якби ви мотивували "плюси", чому б ви використовували ORM для управління / клієнта, які б причини були?
Спробуйте зберегти одну причину за кожну відповідь, щоб ми бачили, що за найкращі причини голосується
Якби ви мотивували "плюси", чому б ви використовували ORM для управління / клієнта, які б причини були?
Спробуйте зберегти одну причину за кожну відповідь, щоб ми бачили, що за найкращі причини голосується
Відповіді:
Зробити доступ до даних більш абстрактним і портативним. Класи впровадження ORM знають, як писати специфічний для постачальника SQL, тому не потрібно.
Найважливіша причина використання ORM полягає в тому, що ви можете мати багату, об'єктно-орієнтовану бізнес-модель і все ще мати можливість зберігати її та швидко писати ефективні запити проти реляційної бази даних. З моєї точки зору, я не бачу реальних переваг, які дає хороший ORM у порівнянні з іншими генерованими DAL, окрім розширених типів запитів, які ви можете написати.
Один із типів запитів, про які я думаю, - це поліморфний запит. Простий запит ORM може вибрати всі фігури у вашій базі даних. Ви отримуєте колекцію фігур назад. Але кожен екземпляр - це квадрат, коло або прямокутник відповідно до його дискримінатора.
Іншим типом запиту буде той, який охоче отримує об'єкт і один або більше пов'язаних об'єктів або колекцій в одному виклику бази даних. наприклад, кожен об'єкт фігури повертається із заповненою вершиною та бічними колекціями.
Пробачте, я не погоджуюся з такою кількістю інших тут, але я не думаю, що генерація коду сама по собі є достатньою підставою для роботи з ORM. Ви можете написати чи знайти багато хороших шаблонів DAL для генераторів кодів, які не мають концептуальних або продуктивних накладних витрат, які виконують ORM.
Або, якщо ви думаєте, що вам не потрібно знати, як написати хороший SQL, щоб використовувати ORM, знову ж таки, я не згоден. Може бути правдою, що з точки зору написання одиничних запитів покладатися на ORM простіше. Але, за допомогою ORM, занадто просто створити погано виконуються процедури, коли розробники не розуміють, як їх запити працюють з ORM та SQL, в який вони переводяться.
Наявність рівня даних, який працює проти декількох баз даних, може бути користю. Це не те, що мені доводилося часто покладатися на це.
Зрештою, я ще раз зазначу, що за моїм досвідом, якщо ви не використовуєте більш вдосконалені функції запиту вашої ORM, існують інші варіанти, які вирішують проблеми, що залишаються з меншим рівнем навчання та меншою кількістю циклів процесора.
О так, деякі розробники вважають, що робота з ORM - це приємно, тому ORM також корисні з точки зору щастя ваших розробників. =)
Швидкість розвитку. Наприклад, усунення повторюваного коду, як-от відображення полів результатів запиту для об’єктів-членів, і навпаки.
Підтримка OO капсулювання бізнес-правил у вашому рівні доступу до даних. Ви можете писати (і налагоджувати) бізнес-правила на мові додатків, що надається вам, замість незграбних тригерів та збережених мов процедур.
Створення кодового коду для основних операцій CRUD. Деякі рамки ORM можуть безпосередньо перевіряти метадані бази даних, читати файли відображення метаданих або використовувати властивості декларативного класу.
Ви можете легко переходити до іншого програмного забезпечення бази даних, оскільки ви розвиваєтеся до абстракції.
Щастя в розвитку, ІМО. ORM резюмує багато предметів з голого металу, які ви повинні зробити в SQL. Він забезпечує просту базу коду: менша кількість вихідних файлів для керування та зміни схем не потребують години обслуговування.
Зараз я використовую ORM, і це пришвидшило мою розробку.
Причина, яку я розглядаю, полягає в тому, щоб уникнути згенерованого коду з інструментів DAL VS2005 (відображення схем, TableAdapters).
DAL / BLL, який я створив понад рік тому, працював чудово (для чого я його створив), поки хтось інший не почав ним користуватися, щоб скористатися деякими згенерованих функцій (про які я і гадки не мав)
Схоже, це забезпечить набагато більш інтуїтивне та чистіше рішення, ніж рішення DAL / BLL від http://wwww.asp.net
Я думав над тим, щоб створити власний генератор кодів SQL Command C # DAL, але ORM виглядає як більш елегантне рішення
Компіляція та тестування запитів.
Оскільки інструментарій для ORM вдосконалюється, простіше визначити правильність ваших запитів швидше за допомогою помилок часу компіляції та тестів.
Складання ваших запитів допомагає розробникам швидше знаходити помилки. Правильно? Правильно. Ця компіляція стала можливою, оскільки розробники зараз записують запити в код, використовуючи свої бізнес-об'єкти або моделі, а не просто рядки операторів, подібних до SQL або SQL.
Якщо ви використовуєте правильні шаблони доступу до даних у .NET, легко перевірити логіку запитів у колекціях пам'яті. Це пришвидшує виконання ваших тестів, тому що вам не потрібно отримувати доступ до бази даних, налаштовувати дані в базі даних або навіть розгортати повнорозмірний контекст даних. [EDIT] Це не так, як я вважав, що це одиниця тестування в пам’яті може представляти важкі труднощі для подолання. Але мені все ж здається, що ці тести на інтеграцію простіше написати, ніж у попередні роки. [/ EDIT]
Це, безумовно, більш актуально сьогодні, ніж кілька років тому, коли було задано питання, але це може бути лише справа Visual Studio і Entity Framework, де лежить мій досвід. Підключіть власне оточення, якщо можливо.
Я думаю, що тут є багато хороших моментів (портативність, простота розробки / обслуговування, орієнтація на бізнес-моделювання тощо), але, намагаючись переконати свого клієнта чи керівництво, все зводиться до того, скільки грошей ви заощадите, використовуючи ОРМ .
Зробіть кілька оцінок типових завдань (або навіть більших проектів, які можуть з’являтися), і ви (сподіваємось!) Отримаєте кілька аргументів для переключення, які важко ігнорувати.
.net яруси з використанням шаблонів кова Сміта
http://nettiers.com/default.aspx?AspxAutoDetectCookieSupport=1
Навіщо кодувати те, що може бути створено так само добре.
Я думаю, що один із мінусів полягає в тому, що ORM потребує оновлення у вашому POJO. в основному пов'язані зі схемою, відношенням і запитом. тому сценарій, коли ви не припускаєте вносити зміни в об'єкти моделі, може бути тому, що він поділяється серед іншого, ніж на проектному або ж / б клієнті та сервері. тому в таких випадках вам потрібно буде розділити його на два рівні, що вимагатиме додаткових зусиль.
Я розробник андроїдів, і, як ви знаєте, мобільні додатки зазвичай не мають величезних розмірів, тому ці додаткові зусилля для розмежування чистої моделі та моделі, порушеної на орні, не здаються повною.
я розумію, що питання є загальним. але мобільні додатки також входять в загальний парасольку.