Мне кажется, что вы все еще используете шаблон DAO.Вы просто реализовали это по-другому.
Я действительно нашел этот вопрос, потому что я исследовал, мертв ли шаблон DAO в простой старой Java, учитывая мощь Hibernate.Похоже, что Hibernate Session является общей реализацией DAO, определяющей такие операции, как создание, сохранение, saveOrUpdate и т. Д.
На практике я не видел особой ценности в использовании шаблона DAO.При использовании Hibernate интерфейсы и реализации DAO являются избыточными обертками вокруг однострочных идиом Hibernate Session, например, getSession (). Update (...);
В результате вы получаете дублированные интерфейсы - Сервисинтерфейс, который переопределяет все методы в интерфейсе DAO, а также некоторые другие, реализованные в терминах этих.
Кажется, что Spring + Hibernate сократил логику персистентности почти до тривиальности.Переносимость технологии постоянства НЕ требуется почти во всех приложениях.Hibernate уже дает вам переносимость базы данных.Конечно, DAO дадут вам возможность перейти с Hibernate на Toplink, но на практике этого никогда не сделать.Технологии персистентности уже являются утечкой абстракций, и приложения создаются для того, чтобы справиться с этим фактом, например, с загрузкой прокси-сервера для установления связей или выполнения попаданий в базу данных, что обязательно связывает их с технологией персистентности.Быть связанным с Hibernate на самом деле не так уж и плохо, так как он делает все возможное, чтобы уйти с дороги (нет проверенных исключений в духе JDBC и прочей чепухи).
В целом, я думаю, что ваша реализация ScalaШаблон DAO хорош, хотя вы, вероятно, могли бы создать полностью универсальный миксин, который давал бы базовые операции CRUD любому объекту (большинство компетентных разработчиков, как правило, также реализуют базовый класс «универсальный DAO» в Java).Это то, что делает Active Record?
/ конец случайных комментариев /