Чому в NHibernate потрібна схема сховища?


13

Я читаю офіційну Вашу першу заяву на основі NHibernate .

Хоча підручник хороший і простий у дотриманні, мені цікаво, чому використовується шаблон репозиторію.

У різних Add, Update, Removeметоди в ProductRepositoryреалізації, код майже ідентичний - всі вони використовують транзакції, а різниця в «м'ясо» , тобто виклик session.SaveINT Addметод, session.Deleteв removeметоді. ( Сторінка не має якорів HTML, але ви можете шукати на сторінці відповідний код, наприклад public void Remove,public void Add )

Цей код просто "почуває себе неправильно".

Чому автор використовує шаблон репозиторію - це лише для демонстрації використання NHibernate або це потрібно чи якась інша причина?

Пс. Моє твір - від Ruby on Rails за допомогою ActiveRecord, тому я намагаюся зрозуміти, як працює / використовується NHibernate.


1
Якщо ви віддаєте перевагу схемі ACtive Record, тоді ви можете використовувати замок Active Record, щоб сидіти на вершині NHibernate castleproject.org/activerecord
Бен Робінсон

3
Це критичне питання. Існує певна суперечка щодо того, використовувати її чи ні. Ейенде написав свої аргументи, щоб не використовувати його у новому репозиторії

Відповіді:


10

Шаблон сховища не потрібно. Що стосується всіх інших зразків - це "архітектурне" рішення, яке вам доведеться приймати відповідно до потреб вашого бізнесу. Взагалі шаблон репозиторію використовується для реалізації "стійкості сутності особи", що означає, що ваші особи не знають нічого про те, як зберегти себе на вашому пристрої зберігання даних (база даних, XML, TextFile тощо). Якщо, наприклад, у вас є адреса сутності, вона не містить логіки збереження (ви ніде не знайдете щось на зразок address.Save або address.Update), але ви перейдете до вашої сутності до методу сховища, який відповідає за збереження зміни


Я думаю, що так і ні. Сесія NHibernate сама по собі є родовим сховищем. Отже, додавання додаткового сховища взагалі є не що інше, як додавання фасаду до об’єкта сеансу.

насправді моя відповідь починається так: "Шаблон сховища не потрібен ..." це може бути лише архітектурне рішення, яке приймається відповідно до потреб бізнесу. Це все

Я з цим повністю згоден. Але я пропустив те, що сам сеанс є сховищем, ось і все.

9

Перевагою використання шаблону репозиторію є знущання над рівнем доступу до даних, щоб ви могли протестувати код свого бізнес-рівня без виклику коду DAL. Є й інші великі переваги, але це, здається, дуже важливо для мене.


2
+1 Шаблон ActiveRecord дуже важко виділити DAL для глузування, зазвичай закінчуючи тестовими одиницями, що вимагають власної бази даних (у цьому випадку тест блоку стає тестом інтеграції).
MattDavey
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.