Монаху Джишину была поставлена задача по созданию веб-страницы для запросов к системной таблице по инвентаризации мешков риса. Мрачно размышляя о предстоящем скучном рабочем дне, монах внезапно вдохновился:
"Я должен разработать объект уровня представления для параметров из формы поиска", - подумал он, -
"а также объект сервисного уровня для каждой строки, возвращаемой в процессе поиска. Но эти объекты должны иметь те же атрибуты, что и объект МешокРиса, который сейчас используется для создания новых строк таблицы. Не могу ли я просто переиспользовать объект уровня базы данных для обеих целей?"
С растущим волнением он подумал:
"Если бы объект уровня базы данных был бы аннотирован соответствующим образом, я бы мог разработать фреймворк, получающий форму ввода данных, проверяющий её, преобразующий в SQL, делающий запрос в базу данных и предсталяющий пользователю результаты поиска в табличном формате... всё это потребует самых минимальных усилий со стороны пользователя!"
Так, в течение следующих нескольких дней монах счастливо разрабатывал фреймворк, используя страницу поиска
МешокРиса в качестве доказательства правильности концепции.

В конце недели Джишин с гордостью показал плоды своего труда учителю Банзену. Учитель изучил фреймворк, кивнул и приказал Джишину переделать семь существующих страниц поиска в приложении, начиная со страницы
Воин, таким образом, чтобы все они использовали новый фреймворк.
После того, как монах побежал выполнять задание, к Банзену подошла монахиня, стоявшая неподалеку.
"Учитель", - спросила монахиня, -
"Объект Воин содержит единственное значение состояния. Если пользовательский запрос будет представлен одним объектом Воин, то как мы сможем запросить всех воинов, состояние которых либо пропал без вести, либо в отставке, либо мёртв?"
"Никак", - сказал Банзен.
"Кроме того", - продолжила монахиня, -
"Объект Воин содержит только информацию, хранящуюся в таблице Воин. Как же мы сможем найти воинов по типу оружия, которое они они используют, или по названию полка, в котором они служили, ведь это требует присоединения дочерних таблиц?"
"Никак", - сказал Банзен.
Учитель взял из банки, стоявшей на его столе, небольшой тёмный кусок и передал его озадаченной монахине.
"Жил когда-то монах, который устал от риса. Однажды он наткнулся на искусство создания куро сато - чёрных леденцов. Каждый день в течение многих лет он грыз кусок за куском, постепенно становясь дряблым, бледным и с дырявыми зубами. В чём заключается ошибка его учителя?"
"Не смог запретить конфеты", - сказала монахиня.
Банзен покачал головой и толкнул тяжелую банку через стол.
"Съешь их до завтрашнего вечера", - приказал Банзен, -
"и тогда поймёшь суть наказания Джишина".Original: Sweet Tooth