На нашем воркшопе в Одессе было много общения и обмена опытом. Дмитрий задал интересный вопрос: "А почему вы до сих пор используете GenericDao в примере, это же Spring". Звучало примерно как: "Вы все еще кипятите? Тогда мы идем в вам!".
Ну а теперь за дело. Все мы привыкли начинать написание Persistence слоя с Dao, а более конкретно с объектов GenericDao. Например таких:
Набор методов может быть различным все зависит от нужд проекта и стиля/вкуса разработчиков. Затем следует имплементация для Hibernate/JPA/JDBC/и.т.п.:
Далее интерфейс для сущности и его имплементация:
Фух. Много букаф. Я думаю что все копировали эти артефакты из проекта в проект с небольшими изменениями. Но это день вчерашний, теперь же давайте поговорим о дне сегодняшнем. Для того, что использовать SpringData для построение JPA репозиториев мы берем для начала документацию, а затем читаем Oliver Gierke.
Ну что ж к делу. Все просто как раз (pom файл):
Два (интерфейс):
Три (контекст):
Кстати XML использовать совсем не обязательно, для любителей @Configuration в SpringData есть полная поддержка plain-Java подхода к конфигурации.
Дело за малым, а именно написать собственно сервис:
Далее пишем тест (код уже приводить не буду) и видим что мы полетели. Какие на мой взгляд за и против:
- меньше писанины это хорошо
- возможность генерации методов по названию класса, а именно не надо упражнений с HQL или Criteria - это тоже хорошо
- дополнительные зависимости это не очень хорошо
- не очень привычный по сравнению с EMF/SF интерфейс это тоже не очень
- ну и магия, она всегда опасна
Код, как обычно вы можете найти на нашем GitHub
Дальше Spring Security, SpringData + NoSQL, @Cachable, Gradle.
Всего всего - ваши me & eugene
No comments:
Post a Comment