SlideShare a Scribd company logo
Spring Data

          Igor Anishchenko
  Lohika - September, 2012
Relational
Database
Clouds
Scaling
Spring Data - Intro (Odessa Java TechTalks)
Column families
Graphs
Key Value
Documents
MongoDB
Document Database
 JSON documents
  JSON queries
MongoDB
The most important difference is the data model:
Mongo data model

A Mongo system (see deployment above) holds a set
of databases
   A database holds a set of collections
      A collection holds a set of documents
        A document is a set of fields
          A field is a key-value pair
      A key is a name (string)
        A value is a
             basic type like
string, integer, float, timestamp, binary, etc.,
             a document, or
             an array of values
MongoDB
• Flexible data model
• Data can be inserted without a defined schema, and
  the format of the data being inserted can change
  at any time
• Easy scalability
• Databases automatically spreads data across
  servers, requiring no participation from the
  applications.
• Servers can be added and removed without downtime
Mongo Infrastructure
API
Mongo Query API
JPA?
" This document is the specification of the
Java API for the management of persistence
and object/relational mapping with Java EE
and Java SE. The technical objective of this
work is to provide an object/relational
mapping facility for the Java application
developer using a Java domain model to man-
age a relational database.
" This document is the specification of the
Java API for the management of persistence
and object/relational mapping with Java
EE and Java SE. The technical objective of
this work is to provide an
object/relational mapping facility for
the Java application developer using a Java
domain model to man- age a relational
database.
JPA?
Decision Time?




     As a developer - what are you
                      looking for?
Spring Data
Mission statement
“… provides a familiar and
consistent Spring-based programming
model for NoSQL and relational stores
while retaining store-specific
features and capabilities”
... history
• The Spring Data project was coined at 2010
• Originated by Rod Johnson (SpringSource)
  and Neo Technologies) early that year
• They were trying to integrate the Neo4j
  graph database with the Spring framework
  and evaluated different approaches
• Current version
Spring Data




    JDBC             JPA
    support for relational stores...
Spring Data




    JDBC             JPA
    support for relational stores...
Spring Data




    JDBC             JPA
    support for relational stores...
Spring Data




    JDBC             JPA
    support for relational stores...
Spring Data




    JDBC             JPA
    support for relational stores...
Core components

Building blocks of Spring Data modules
Spring Core
•            IoC/DI

• Spring namespace

• Configuring resources to access the stores

• Integration with core Spring functionality
  like JMX is provided which means that some
  stores will expose statistics through their
  native API
Mapping
...Mapping
• A very core part of the Spring Data modules is a
  mapping and conversion API that allows obtaining
  meta-data about domain classes

• Most of the NoSQL Java APIs do not provide support
  to map domain objects onto the stores data
  abstractions

• With native Java drivers You would usually have to
  write a significant amount of code to map data
  onto your domain objects
JPA - Entity
mapping
Entity mapping - MongoDB
Templates
... Templates
• Heavily used in spring (JdbcTemplate, JmsTemplate)

• JdbcTemplate - simplifies the use of JDBC and helps to:
   • avoid common errors
   • executes core JDBC workflow
   • SQL queries or updates, iteration over ResultSets and
   • catching JDBC exceptions

• Spring takes this concept and provided templates for noSQL
  stores
   • RedisTemplate
   • MongoTemplate

• Offer helper methods that allow us to execute commonly needed
  operations like persisting an object with a single statement while
  automatically taking care of appropriate resource management and
  exception translation
MongoTemplate usage
MongoOperation/-Template
Repositories
GenericDao
... Repositories
• Provides a repository abstraction on top of the Template
  implementation

• Will reduce the effort to implement data access objects to a
  plain interface definition for the most common scenarios like
  standard CRUD operations as well as executing queries in case
  the store supports that.

• This abstraction is actually the most top layer and blends
  the APIs of the different stores as much as reasonably
  possible.

• Interface based programming model, so you have an interface
  for the queries you want to trigger and then those methods
  will be generated without a need to implement this interface
Repositories - JPA
Repositories -
MongoDB
Querydsl
DEMO
Summary
•   Abstraction over stores drivers
•   Mapping support
•   Templates
•   Repositories / custom repositories
•   Querydsl
•   Spring namespace
•   Cross-store persistence
?       ?   ?

?
    ?
        ?
Resources
www.springframework.org/spring-data

http://github.com/SpringSource/spring-data-mongodb

O'Reilly's Open Feedback Publishing System is the book:
http://ofps.oreilly.com/titles/9781449323950/

http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

More Related Content

PPTX
Hibernate ppt
ODP
Spring Data in 10 minutes
PDF
An Introduction to Spring Data
PPTX
Spring data jpa
PPTX
Hibernate Basic Concepts - Presentation
PPTX
Hibernate in Action
PDF
Hibernate 3
ODP
Hibernate Developer Reference
Hibernate ppt
Spring Data in 10 minutes
An Introduction to Spring Data
Spring data jpa
Hibernate Basic Concepts - Presentation
Hibernate in Action
Hibernate 3
Hibernate Developer Reference

What's hot (20)

PPT
Introduction to Hibernate
PPTX
Hibernate tutorial
PPT
Hibernate presentation
PPT
Hibernate architecture
PPTX
Hibernate in Nutshell
PPTX
Entity Framework: Code First and Magic Unicorns
PPT
Java Persistence API (JPA) Step By Step
PDF
Spring db-access mod03
PPTX
Hibernate
PPTX
Евгений Капинос "Advanced JPA (Java Persistent API)"
PPS
Java Hibernate Programming with Architecture Diagram and Example
PPTX
Spring (1)
PDF
Change RelationalDB to GraphDB with OrientDB
PPSX
Java IO, Serialization
PPTX
Entity framework
DOC
Hibernate tutorial for beginners
PDF
Introduction to JPA and Hibernate including examples
KEY
Core Data
PPTX
Entity Framework
DOC
24 collections framework interview questions
Introduction to Hibernate
Hibernate tutorial
Hibernate presentation
Hibernate architecture
Hibernate in Nutshell
Entity Framework: Code First and Magic Unicorns
Java Persistence API (JPA) Step By Step
Spring db-access mod03
Hibernate
Евгений Капинос "Advanced JPA (Java Persistent API)"
Java Hibernate Programming with Architecture Diagram and Example
Spring (1)
Change RelationalDB to GraphDB with OrientDB
Java IO, Serialization
Entity framework
Hibernate tutorial for beginners
Introduction to JPA and Hibernate including examples
Core Data
Entity Framework
24 collections framework interview questions
Ad

Viewers also liked (17)

PPTX
JDBC - JPA - Spring Data
PPTX
Easy data-with-spring-data-jpa
PDF
An introduction into Spring Data
PPT
Spring + JPA + DAO Step by Step
PDF
Spring Data JPA
PDF
Spring Data Jpa
PDF
Spring Boot Lightning Talk
PPTX
Spring JDBCTemplate
PDF
Spring 4.0 - Evolution or Revolution
PDF
Jpa with spring data
PDF
Spring Framework - Data Access
PDF
Spring Data Jpa
PDF
Data Access 2.0? Please welcome, Spring Data!
PPS
JPA - Java Persistence API
PPT
Java Persistence API (JPA) - A Brief Overview
PDF
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
PDF
What is tackled in the Java EE Security API (Java EE 8)
JDBC - JPA - Spring Data
Easy data-with-spring-data-jpa
An introduction into Spring Data
Spring + JPA + DAO Step by Step
Spring Data JPA
Spring Data Jpa
Spring Boot Lightning Talk
Spring JDBCTemplate
Spring 4.0 - Evolution or Revolution
Jpa with spring data
Spring Framework - Data Access
Spring Data Jpa
Data Access 2.0? Please welcome, Spring Data!
JPA - Java Persistence API
Java Persistence API (JPA) - A Brief Overview
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
What is tackled in the Java EE Security API (Java EE 8)
Ad

Similar to Spring Data - Intro (Odessa Java TechTalks) (20)

PPT
Spring data presentation
PPTX
No Sql in Enterprise Java Applications
PPTX
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Basel
PDF
Data access 2.0? Please welcome: Spring Data!
PPTX
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich
PPTX
MongoDB + Java + Spring Data
KEY
using Spring and MongoDB on Cloud Foundry
PDF
Hands On Spring Data
PPT
Wmware NoSQL
PDF
Thomas risberg mongosv-2012-spring-data-cloud-foundry
PPTX
Александр Третьяков: "Spring Data JPA and MongoDB"
PDF
Spring Data NHJUG April 2012
KEY
Taming NoSQL with Spring Data
PDF
CloudFoundry and MongoDb, a marriage made in heaven
PPTX
Enterprise Spring
ODP
Polyglot persistence with Spring Data
PDF
Nosql data models
PPTX
Selecting best NoSQL
PDF
Grails and Neo4j
PDF
GR8Conf 2011: Neo4j Plugin
Spring data presentation
No Sql in Enterprise Java Applications
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Basel
Data access 2.0? Please welcome: Spring Data!
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich
MongoDB + Java + Spring Data
using Spring and MongoDB on Cloud Foundry
Hands On Spring Data
Wmware NoSQL
Thomas risberg mongosv-2012-spring-data-cloud-foundry
Александр Третьяков: "Spring Data JPA and MongoDB"
Spring Data NHJUG April 2012
Taming NoSQL with Spring Data
CloudFoundry and MongoDb, a marriage made in heaven
Enterprise Spring
Polyglot persistence with Spring Data
Nosql data models
Selecting best NoSQL
Grails and Neo4j
GR8Conf 2011: Neo4j Plugin

Recently uploaded (20)

PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Machine learning based COVID-19 study performance prediction
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
1. Introduction to Computer Programming.pptx
PPTX
Machine Learning_overview_presentation.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Approach and Philosophy of On baking technology
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
Tartificialntelligence_presentation.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Big Data Technologies - Introduction.pptx
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Encapsulation_ Review paper, used for researhc scholars
Per capita expenditure prediction using model stacking based on satellite ima...
MIND Revenue Release Quarter 2 2025 Press Release
Building Integrated photovoltaic BIPV_UPV.pdf
NewMind AI Weekly Chronicles - August'25-Week II
Diabetes mellitus diagnosis method based random forest with bat algorithm
Machine learning based COVID-19 study performance prediction
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
1. Introduction to Computer Programming.pptx
Machine Learning_overview_presentation.pptx
Network Security Unit 5.pdf for BCA BBA.
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Approach and Philosophy of On baking technology
Digital-Transformation-Roadmap-for-Companies.pptx
Tartificialntelligence_presentation.pptx
Spectral efficient network and resource selection model in 5G networks
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Big Data Technologies - Introduction.pptx

Spring Data - Intro (Odessa Java TechTalks)

  • 1. Spring Data Igor Anishchenko Lohika - September, 2012
  • 10. MongoDB Document Database JSON documents JSON queries
  • 11. MongoDB The most important difference is the data model:
  • 12. Mongo data model A Mongo system (see deployment above) holds a set of databases A database holds a set of collections A collection holds a set of documents A document is a set of fields A field is a key-value pair A key is a name (string) A value is a basic type like string, integer, float, timestamp, binary, etc., a document, or an array of values
  • 13. MongoDB • Flexible data model • Data can be inserted without a defined schema, and the format of the data being inserted can change at any time • Easy scalability • Databases automatically spreads data across servers, requiring no participation from the applications. • Servers can be added and removed without downtime
  • 16. JPA?
  • 17. " This document is the specification of the Java API for the management of persistence and object/relational mapping with Java EE and Java SE. The technical objective of this work is to provide an object/relational mapping facility for the Java application developer using a Java domain model to man- age a relational database.
  • 18. " This document is the specification of the Java API for the management of persistence and object/relational mapping with Java EE and Java SE. The technical objective of this work is to provide an object/relational mapping facility for the Java application developer using a Java domain model to man- age a relational database.
  • 19. JPA?
  • 20. Decision Time? As a developer - what are you looking for?
  • 22. Mission statement “… provides a familiar and consistent Spring-based programming model for NoSQL and relational stores while retaining store-specific features and capabilities”
  • 23. ... history • The Spring Data project was coined at 2010 • Originated by Rod Johnson (SpringSource) and Neo Technologies) early that year • They were trying to integrate the Neo4j graph database with the Spring framework and evaluated different approaches • Current version
  • 24. Spring Data JDBC JPA support for relational stores...
  • 25. Spring Data JDBC JPA support for relational stores...
  • 26. Spring Data JDBC JPA support for relational stores...
  • 27. Spring Data JDBC JPA support for relational stores...
  • 28. Spring Data JDBC JPA support for relational stores...
  • 29. Core components Building blocks of Spring Data modules
  • 30. Spring Core • IoC/DI • Spring namespace • Configuring resources to access the stores • Integration with core Spring functionality like JMX is provided which means that some stores will expose statistics through their native API
  • 32. ...Mapping • A very core part of the Spring Data modules is a mapping and conversion API that allows obtaining meta-data about domain classes • Most of the NoSQL Java APIs do not provide support to map domain objects onto the stores data abstractions • With native Java drivers You would usually have to write a significant amount of code to map data onto your domain objects
  • 34. Entity mapping - MongoDB
  • 36. ... Templates • Heavily used in spring (JdbcTemplate, JmsTemplate) • JdbcTemplate - simplifies the use of JDBC and helps to: • avoid common errors • executes core JDBC workflow • SQL queries or updates, iteration over ResultSets and • catching JDBC exceptions • Spring takes this concept and provided templates for noSQL stores • RedisTemplate • MongoTemplate • Offer helper methods that allow us to execute commonly needed operations like persisting an object with a single statement while automatically taking care of appropriate resource management and exception translation
  • 41. ... Repositories • Provides a repository abstraction on top of the Template implementation • Will reduce the effort to implement data access objects to a plain interface definition for the most common scenarios like standard CRUD operations as well as executing queries in case the store supports that. • This abstraction is actually the most top layer and blends the APIs of the different stores as much as reasonably possible. • Interface based programming model, so you have an interface for the queries you want to trigger and then those methods will be generated without a need to implement this interface
  • 45. DEMO
  • 46. Summary • Abstraction over stores drivers • Mapping support • Templates • Repositories / custom repositories • Querydsl • Spring namespace • Cross-store persistence
  • 47. ? ? ? ? ? ?
  • 48. Resources www.springframework.org/spring-data http://github.com/SpringSource/spring-data-mongodb O'Reilly's Open Feedback Publishing System is the book: http://ofps.oreilly.com/titles/9781449323950/ http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

Editor's Notes

  • #5: Scaling is the problem - http://prabhubuzz.wordpress.com/2010/09/06/not-only-sql/ move to the cloud made things worse RDBS don't scale easily into the horizontal manner.
  • #6: many noSql vendorsStrong ConsistencyAll clients see the same view, even in presence of updatesHigh AvailabilityAll clients can find some replica of the data, even in the presence of failuresPartition-toleranceThe system properties hold even when the system is partitionedThe CAP theorem states that you can always have only two of the above three CAP properties. The ACID system serves consistency. Hence Amazon Dynamo providing Availability and Partitioning properties, consistency is eventually achieved.
  • #7: Columns families - cassandra (scale much better) table of column families
  • #9: Key Value stores (redis) - like HashMapRedis, Riak, Project Voldemort, Membase, Amazon SimpleDB, Amazon Dynamo, MemcachedDB
  • #10: Documents store (jason stores) - mongoDB, CouchDb,RavenDB, JackRabbit, Terrastore - i will show in a few minutesMongoDB Infrastructure APIMongoDB Query API
  • #12: http://www.infoq.com/articles/Transition-RDBMS-NoSQL
  • #21: so much choices, so many APIs - they are very different, not all of the those stores have Java driversfrom Java developers perspective, how can we approach this, how Java developer can get easy access to those stores, without drill down to all the details of the stores.
  • #22: Spring Data makes it easier to build Spring-powered applications that use new data access technologies such as non-relational databases, map-reduce frameworks, and cloud based data services as well as provide improved support for relational database technologies.Spring Data is an umbrella open source project which contains many subprojects that are specific to a given database. The projects are developed by working together with many of the companies and developers that are behind these exciting technologies.
  • #25: Spring Data supported modules - pics: key value stores - riak, redis (vmware product, not surprise) documents - mongodb, couchbase (active development is on mongodb)hadoop (big data manipulation), neo4j support for relational stores: JDBC and JPA (consists only a repository)
  • #26: Spring Data supported modules - pics: key value stores - riak, redis (vmware product, not surprise) documents - mongodb, couchbase (active development is on mongodb)hadoop (big data manipulation), neo4j support for relational stores: JDBC and JPA (consists only a repository)
  • #27: Spring Data supported modules - pics: key value stores - riak, redis (vmware product, not surprise) documents - mongodb, couchbase (active development is on mongodb)hadoop (big data manipulation), neo4j support for relational stores: JDBC and JPA (consists only a repository)
  • #28: Spring Data supported modules - pics: key value stores - riak, redis (vmware product, not surprise) documents - mongodb, couchbase (active development is on mongodb)hadoop (big data manipulation), neo4j support for relational stores: JDBC and JPA (consists only a repository)
  • #29: Spring Data supported modules - pics: key value stores - riak, redis (vmware product, not surprise) documents - mongodb, couchbase (active development is on mongodb)hadoop (big data manipulation), neo4j support for relational stores: JDBC and JPA (consists only a repository)
  • #30: http://www.infoq.com/articles/spring-data-intro
  • #31: A very core theme of the Spring Data project available through all of the stores is support for configuring resources to access the stores. This supported is mainly implemented as XML namespace and support classes for Spring JavaConfig and will allow us to easily setup access to a MongoDB, an embedded Neo4j instance and the like. Also integration with core Spring functionality like JMX is provided which means that some stores will expose statistics through their native API which will be exposed to JMX via Spring Data.
  • #32: Most of the NoSQL Java APIs do not provide support to map domain objects onto the stores data abstractions (documents in MongoDB, nodes and relationships for Neo4j). So when working with the native Java drivers you would usually have to write a significant amount of code to map data onto your domain objects of your application when reading and vice versa on writing. Thus, a very core part of the Spring Data modules is a mapping and conversion API that allows obtaining meta-data about domain classes to be persistent as well as the actual conversion of arbitrary domain objects into store specific data types.
  • #33: Most of the NoSQL Java APIs do not provide support to map domain objects onto the stores data abstractions (documents in MongoDB, nodes and relationships for Neo4j). So when working with the native Java drivers you would usually have to write a significant amount of code to map data onto your domain objects of your application when reading and vice versa on writing. Thus, a very core part of the Spring Data modules is a mapping and conversion API that allows obtaining meta-data about domain classes to be persistent as well as the actual conversion of arbitrary domain objects into store specific data types.
  • #34: Most of the NoSQL Java APIs do not provide support to map domain objects onto the stores data abstractions (documents in MongoDB, nodes and relationships for Neo4j). So when working with the native Java drivers you would usually have to write a significant amount of code to map data onto your domain objects of your application when reading and vice versa on writing. Thus, a very core part of the Spring Data modules is a mapping and conversion API that allows obtaining meta-data about domain classes to be persistent as well as the actual conversion of arbitrary domain objects into store specific data types.
  • #35: Most of the NoSQL Java APIs do not provide support to map domain objects onto the stores data abstractions (documents in MongoDB, nodes and relationships for Neo4j). So when working with the native Java drivers you would usually have to write a significant amount of code to map data onto your domain objects of your application when reading and vice versa on writing. Thus, a very core part of the Spring Data modules is a mapping and conversion API that allows obtaining meta-data about domain classes to be persistent as well as the actual conversion of arbitrary domain objects into store specific data types.
  • #36: any one knows jdbctemplate in spring? Its heavily used in spring. This is the central class in the JDBC core package. This is the class that provides an API. It simplifies the use of JDBC and helps to avoid common errors. It executes core JDBC workflow, leaving application code to provide SQL and extract results. This class executes SQL queries or updates, initiating iteration over ResultSets and catching JDBC exceptions and translating them to the generic, more informative exception hierarchy defined in the org.springframework.dao package. Spring takes this concept and provided templates for noSQL stores you can find MongoTemplate, RedisTemplateOn top of that we'll find opinionated APIs in the shape of template pattern implementations already well known from Spring's JdbcTemplate, JmsTemplate etc. Thus, there is a RedisTemplate, a MongoTemplate and so on. As you probably already know these templates offer helper methods that allow us to execute commonly needed operations like persisting an object with a single statement while automatically taking care of appropriate resource management and exception translation. Beyond that they expose callback APIs that allow you to access the store native APIs while still getting exceptions translated and resources managed properly.
  • #37: any one knows jdbctemplate in spring? Its heavily used in spring. This is the central class in the JDBC core package. This is the class that provides an API. It simplifies the use of JDBC and helps to avoid common errors. It executes core JDBC workflow, leaving application code to provide SQL and extract results. This class executes SQL queries or updates, initiating iteration over ResultSets and catching JDBC exceptions and translating them to the generic, more informative exception hierarchy defined in the org.springframework.dao package. Spring takes this concept and provided templates for noSQL stores you can find MongoTemplate, RedisTemplateOn top of that we'll find opinionated APIs in the shape of template pattern implementations already well known from Spring's JdbcTemplate, JmsTemplate etc. Thus, there is a RedisTemplate, a MongoTemplate and so on. As you probably already know these templates offer helper methods that allow us to execute commonly needed operations like persisting an object with a single statement while automatically taking care of appropriate resource management and exception translation. Beyond that they expose callback APIs that allow you to access the store native APIs while still getting exceptions translated and resources managed properly.
  • #38: any one knows jdbctemplate in spring? Its heavily used in spring. This is the central class in the JDBC core package. This is the class that provides an API. It simplifies the use of JDBC and helps to avoid common errors. It executes core JDBC workflow, leaving application code to provide SQL and extract results. This class executes SQL queries or updates, initiating iteration over ResultSets and catching JDBC exceptions and translating them to the generic, more informative exception hierarchy defined in the org.springframework.dao package. Spring takes this concept and provided templates for noSQL stores you can find MongoTemplate, RedisTemplateOn top of that we'll find opinionated APIs in the shape of template pattern implementations already well known from Spring's JdbcTemplate, JmsTemplate etc. Thus, there is a RedisTemplate, a MongoTemplate and so on. As you probably already know these templates offer helper methods that allow us to execute commonly needed operations like persisting an object with a single statement while automatically taking care of appropriate resource management and exception translation. Beyond that they expose callback APIs that allow you to access the store native APIs while still getting exceptions translated and resources managed properly.
  • #39: any one knows jdbctemplate in spring? Its heavily used in spring. This is the central class in the JDBC core package. This is the class that provides an API. It simplifies the use of JDBC and helps to avoid common errors. It executes core JDBC workflow, leaving application code to provide SQL and extract results. This class executes SQL queries or updates, initiating iteration over ResultSets and catching JDBC exceptions and translating them to the generic, more informative exception hierarchy defined in the org.springframework.dao package. Spring takes this concept and provided templates for noSQL stores you can find MongoTemplate, RedisTemplateOn top of that we'll find opinionated APIs in the shape of template pattern implementations already well known from Spring's JdbcTemplate, JmsTemplate etc. Thus, there is a RedisTemplate, a MongoTemplate and so on. As you probably already know these templates offer helper methods that allow us to execute commonly needed operations like persisting an object with a single statement while automatically taking care of appropriate resource management and exception translation. Beyond that they expose callback APIs that allow you to access the store native APIs while still getting exceptions translated and resources managed properly.
  • #40: So who is written a GenericDao? On top of that we have Repositories support. So an idea here is that usually you implements some kind of data layer, just having interface and then implementation for different store, like JPA store, mongo store and etc.. and most of the code written is there is a boilerplate.To ease that even more Spring Data provides a repository abstraction on top of the template implementation that will reduce the effort to implement data access objects to a plain interface definition for the most common scenarios like standard CRUD operations as well as executing queries in case the store supports that. This abstraction is actually the most top layer and blends the APIs of the different stores as much as reasonably possible.so we have here an interface based programming model, so you have an interface for the queries you want to trigger and then those methods will be generated without a need to implement this interface. I will show you later on... Уже прошло несколько лет с тех пор, как появился JPA. Работа с Entity Manager увлекательна, но разработчики пишут красивый API, а подробности работы с базой данных скрывают. При этом частая проблема - дублирование имплементации, когда из одного DAO в другой у нас плавно перекочёвывает один и тот же код, в лучшем случае этот код переносится в абстрактный базовый DAO. Spring Data коренным образом решает проблему - при его использовании остаётся только API на уровне интерфейсов, вся имплементация создаётся автоматически с использованием AOP.http://atamanenko.blogspot.com/2012/02/jpa-spring-data-jpa.htmlTo ease that even more Spring Data provides a repository abstraction on top of the template implementation that will reduce the effort to implement data access objects to a plain interface definition for the most common scenarios like standard CRUD operations as well as executing queries in case the store supports that. This abstraction is actually the most top layer and blends the APIs of the different stores as much as reasonably possible. Thus the store specific implementations of it share quite a lot of commonalities.
  • #41: So who is written a GenericDao? On top of that we have Repositories support. So an idea here is that usually you implements some kind of data layer, just having interface and then implementation for different store, like JPA store, mongo store and etc.. and most of the code written is there is a boilerplate.To ease that even more Spring Data provides a repository abstraction on top of the template implementation that will reduce the effort to implement data access objects to a plain interface definition for the most common scenarios like standard CRUD operations as well as executing queries in case the store supports that. This abstraction is actually the most top layer and blends the APIs of the different stores as much as reasonably possible.so we have here an interface based programming model, so you have an interface for the queries you want to trigger and then those methods will be generated without a need to implement this interface. I will show you later on... Уже прошло несколько лет с тех пор, как появился JPA. Работа с Entity Manager увлекательна, но разработчики пишут красивый API, а подробности работы с базой данных скрывают. При этом частая проблема - дублирование имплементации, когда из одного DAO в другой у нас плавно перекочёвывает один и тот же код, в лучшем случае этот код переносится в абстрактный базовый DAO. Spring Data коренным образом решает проблему - при его использовании остаётся только API на уровне интерфейсов, вся имплементация создаётся автоматически с использованием AOP.http://atamanenko.blogspot.com/2012/02/jpa-spring-data-jpa.htmlTo ease that even more Spring Data provides a repository abstraction on top of the template implementation that will reduce the effort to implement data access objects to a plain interface definition for the most common scenarios like standard CRUD operations as well as executing queries in case the store supports that. This abstraction is actually the most top layer and blends the APIs of the different stores as much as reasonably possible. Thus the store specific implementations of it share quite a lot of commonalities.
  • #42: So who is written a GenericDao? On top of that we have Repositories support. So an idea here is that usually you implements some kind of data layer, just having interface and then implementation for different store, like JPA store, mongo store and etc.. and most of the code written is there is a boilerplate.To ease that even more Spring Data provides a repository abstraction on top of the template implementation that will reduce the effort to implement data access objects to a plain interface definition for the most common scenarios like standard CRUD operations as well as executing queries in case the store supports that. This abstraction is actually the most top layer and blends the APIs of the different stores as much as reasonably possible.so we have here an interface based programming model, so you have an interface for the queries you want to trigger and then those methods will be generated without a need to implement this interface. I will show you later on... Уже прошло несколько лет с тех пор, как появился JPA. Работа с Entity Manager увлекательна, но разработчики пишут красивый API, а подробности работы с базой данных скрывают. При этом частая проблема - дублирование имплементации, когда из одного DAO в другой у нас плавно перекочёвывает один и тот же код, в лучшем случае этот код переносится в абстрактный базовый DAO. Spring Data коренным образом решает проблему - при его использовании остаётся только API на уровне интерфейсов, вся имплементация создаётся автоматически с использованием AOP.http://atamanenko.blogspot.com/2012/02/jpa-spring-data-jpa.htmlTo ease that even more Spring Data provides a repository abstraction on top of the template implementation that will reduce the effort to implement data access objects to a plain interface definition for the most common scenarios like standard CRUD operations as well as executing queries in case the store supports that. This abstraction is actually the most top layer and blends the APIs of the different stores as much as reasonably possible. Thus the store specific implementations of it share quite a lot of commonalities.
  • #43: On top of that we have Repositories support. So an idea here is that usually you implements some kind of data layer, just having interface and then implementation for different store, like JPA store, mongo store and etc.. and most of the code written is there is a boilerplate.So who is written a GenericDao? so we have here an interface based programming model, so you have an interface for the queries you want to trigger and then those methods will be generated without a need to implement this interface. I will show you later on... Уже прошло несколько лет с тех пор, как появился JPA. Работа с Entity Manager увлекательна, но разработчики пишут красивый API, а подробности работы с базой данных скрывают. При этом частая проблема - дублирование имплементации, когда из одного DAO в другой у нас плавно перекочёвывает один и тот же код, в лучшем случае этот код переносится в абстрактный базовый DAO. Spring Data коренным образом решает проблему - при его использовании остаётся только API на уровне интерфейсов, вся имплементация создаётся автоматически с использованием AOP.http://atamanenko.blogspot.com/2012/02/jpa-spring-data-jpa.htmlTo ease that even more Spring Data provides a repository abstraction on top of the template implementation that will reduce the effort to implement data access objects to a plain interface definition for the most common scenarios like standard CRUD operations as well as executing queries in case the store supports that. This abstraction is actually the most top layer and blends the APIs of the different stores as much as reasonably possible. Thus the store specific implementations of it share quite a lot of commonalities.
  • #44: On top of that we have Repositories support. So an idea here is that usually you implements some kind of data layer, just having interface and then implementation for different store, like JPA store, mongo store and etc.. and most of the code written is there is a boilerplate.So who is written a GenericDao? so we have here an interface based programming model, so you have an interface for the queries you want to trigger and then those methods will be generated without a need to implement this interface. I will show you later on... Уже прошло несколько лет с тех пор, как появился JPA. Работа с Entity Manager увлекательна, но разработчики пишут красивый API, а подробности работы с базой данных скрывают. При этом частая проблема - дублирование имплементации, когда из одного DAO в другой у нас плавно перекочёвывает один и тот же код, в лучшем случае этот код переносится в абстрактный базовый DAO. Spring Data коренным образом решает проблему - при его использовании остаётся только API на уровне интерфейсов, вся имплементация создаётся автоматически с использованием AOP.http://atamanenko.blogspot.com/2012/02/jpa-spring-data-jpa.htmlTo ease that even more Spring Data provides a repository abstraction on top of the template implementation that will reduce the effort to implement data access objects to a plain interface definition for the most common scenarios like standard CRUD operations as well as executing queries in case the store supports that. This abstraction is actually the most top layer and blends the APIs of the different stores as much as reasonably possible. Thus the store specific implementations of it share quite a lot of commonalities.
  • #45: and the last one, Querydsl