25
Spring Data - новый взгляд на persistence Алексей Резчиков Май 2013 SpringByExample.com .ua

Spring Data: New approach to persistence

Embed Size (px)

DESCRIPTION

My presentation for the JeeConf 2013 (24-25th of May, Kyiv, Ukraine)

Citation preview

Page 1: Spring Data: New approach to persistence

Spring Data - новый взгляд на

persistenceАлексей Резчиков

Май 2013

SpringByExample.com.ua

Page 2: Spring Data: New approach to persistence

@ua_spring #jeeconf

Обо мне• Java разработчик и тимлид уже

более 7-ми лет• Работаю со Spring c 2006 года• Последователь XP/Agile/Lean

• Популяризирую Spring Framework в рамках SpringByExample.com.ua

Page 3: Spring Data: New approach to persistence

@ua_spring #jeeconf

Проголосуем

Page 4: Spring Data: New approach to persistence

@ua_spring #jeeconf

Spring Data?• Проект верхнего уровня SpringSource• Направлен на упрощение работы с

хранилищами данных• Реализация подхода polyglot persistence• Выделение абстракции Repository• Сегодня детальнее поговорим про Spring Data

JPA

Page 5: Spring Data: New approach to persistence

@ua_spring #jeeconf

Page 6: Spring Data: New approach to persistence

@ua_spring #jeeconf

Generic DAO

Page 7: Spring Data: New approach to persistence

@ua_spring #jeeconf

Generic DAO

Page 8: Spring Data: New approach to persistence

@ua_spring #jeeconf

Generic DAO

Page 9: Spring Data: New approach to persistence

@ua_spring #jeeconf

Persistence Service

Page 10: Spring Data: New approach to persistence

@ua_spring #jeeconf

Persistence Service

Page 11: Spring Data: New approach to persistence

@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/

Page 12: Spring Data: New approach to persistence

@ua_spring #jeeconf

Раз – два – три• Подключаем репозитории• Наследуем интерфейс• Используем их

Page 13: Spring Data: New approach to persistence

@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

Page 14: Spring Data: New approach to persistence

@ua_spring #jeeconf

@NamedQuery

Page 15: Spring Data: New approach to persistence

@ua_spring #jeeconf

Paging and Ordering

Page 16: Spring Data: New approach to persistence

Predicates & QueryDSL

• Сторонняя библиотека от Mysema• Наследуемся от QueryDSLPredicateExecutor• Добавляем инструментальную обработку

классов в билд• Составляем Predicate• Передаем его в метод (зачастую вместе с

Pageable)

@ua_spring #jeeconf

Page 17: Spring Data: New approach to persistence

@ua_spring #jeeconf

А если че-то нет?

Page 18: Spring Data: New approach to persistence

@ua_spring #jeeconf

А если че-то нет?

Page 19: Spring Data: New approach to persistence

@ua_spring #jeeconf

Auditing

Page 20: Spring Data: New approach to persistence

@ua_spring #jeeconf

Auditing

Page 21: Spring Data: New approach to persistence

@ua_spring #jeeconf

Транзакционность?• Все методы репозиториев транзакционные• В каждом конкретном случае стоит

задуматься хватает ли нам этого?

Page 22: Spring Data: New approach to persistence

@ua_spring #jeeconf

Не только JPA• JPA• JDBC• Apache Hadoop• GemFire• REST• Redis• MongoDB• Neo4j• e.t.c.

Page 23: Spring Data: New approach to persistence

@ua_spring #jeeconf

Критика подхода• Теряем гибкость• Приносим дополнительную сложность• Баги

Page 24: Spring Data: New approach to persistence

@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

Page 25: Spring Data: New approach to persistence

@ua_spring #jeeconf

Вопросы@ua_spring

[email protected]

SpringByExample.com.ua