spring data: new approach to persistence

Post on 28-May-2015

8.139 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

oleksiy.rezchykov@gmail.com

SpringByExample.com.ua

top related