Upload
oleksiy-rezchykov
View
8.139
Download
0
Embed Size (px)
DESCRIPTION
My presentation for the JeeConf 2013 (24-25th of May, Kyiv, Ukraine)
Citation preview
Spring Data - новый взгляд на
persistenceАлексей Резчиков
Май 2013
SpringByExample.com.ua
@ua_spring #jeeconf
Обо мне• Java разработчик и тимлид уже
более 7-ми лет• Работаю со Spring c 2006 года• Последователь XP/Agile/Lean
• Популяризирую Spring Framework в рамках SpringByExample.com.ua
@ua_spring #jeeconf
Проголосуем
@ua_spring #jeeconf
Spring Data?• Проект верхнего уровня SpringSource• Направлен на упрощение работы с
хранилищами данных• Реализация подхода polyglot persistence• Выделение абстракции Repository• Сегодня детальнее поговорим про Spring Data
JPA
@ua_spring #jeeconf
@ua_spring #jeeconf
Generic DAO
@ua_spring #jeeconf
Generic DAO
@ua_spring #jeeconf
Generic DAO
@ua_spring #jeeconf
Persistence Service
@ua_spring #jeeconf
Persistence Service
@ua_spring #jeeconf
Демо приложение• TODOShare – TODO менеджер• Spring 3.2.x• Spring MVC, Spring Security, Spring Data JPA,
Spring Data Solr• Thymeleaf• jQuery, Bootstrap• Solr• Tomcat 7• H2
https://github.com/mcgray/TODOShare/
@ua_spring #jeeconf
Раз – два – три• Подключаем репозитории• Наследуем интерфейс• Используем их
@ua_spring #jeeconf
findBy*• findBy<FieldName>Or<OtherFieldName>OrderBy
<FieldName>Desc
• Список возможных комбинаций:http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/jpa.repositories.html#jpa.sample-app.finders.strategies
@ua_spring #jeeconf
@NamedQuery
@ua_spring #jeeconf
Paging and Ordering
Predicates & QueryDSL
• Сторонняя библиотека от Mysema• Наследуемся от QueryDSLPredicateExecutor• Добавляем инструментальную обработку
классов в билд• Составляем Predicate• Передаем его в метод (зачастую вместе с
Pageable)
@ua_spring #jeeconf
@ua_spring #jeeconf
А если че-то нет?
@ua_spring #jeeconf
А если че-то нет?
@ua_spring #jeeconf
Auditing
@ua_spring #jeeconf
Auditing
@ua_spring #jeeconf
Транзакционность?• Все методы репозиториев транзакционные• В каждом конкретном случае стоит
задуматься хватает ли нам этого?
@ua_spring #jeeconf
Не только JPA• JPA• JDBC• Apache Hadoop• GemFire• REST• Redis• MongoDB• Neo4j• e.t.c.
@ua_spring #jeeconf
Критика подхода• Теряем гибкость• Приносим дополнительную сложность• Баги
@ua_spring #jeeconf
Ресурсы• Project lead: Oliver Gierke
• Код демо приложения:https://github.com/mcgray/TODOShare/
• Документация Data JPA:http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/• Книга: http://shop.oreilly.com/product/0636920024767.do
@ua_spring #jeeconf
Вопросы@ua_spring
SpringByExample.com.ua