how to use nosql in enterprise java applications - nosql roadshow zurich
DESCRIPTION
Once you begin developing with NoSQL technologies you will quickly realize that accessing data stores or services often requires in-depth knowledge of proprietary APIs that are typically not designed for use in enterprise Java applications. Sooner or later you might find yourself wanting to write an abstraction layer to encapsulate those APIs and simplify your application code. Luckily such an abstraction layer already exits: Spring Data.TRANSCRIPT
How to Use NoSQLin Enterprise Java Applications
Patrick Baumgartner
NoSQL Roadshow | Zürich | 26.04.2012
2
Agenda
• Speaker Profile• New Demands on Data Access• New Types of Data Stores• Integrating NoSQL Data Stores• Spring Data Overview • Example with MongoDB• Q & A
3
Speaker Profile
Patrick Baumgartner• Senior Software Consultant | Partner• VMware/SpringSource Certified Instructor (Spring Trainer)• Spring Framework, OSGi & agile engineering practices• Co-author of „OSGi für Praktiker“ (Hanser)
Swiftmind GmbH http://www.swiftmind.com
• Enterprise Java, Spring & OSGi consulting• Spring & OSGi workshops & trainings• Agile engineering practices workshops
4
New Demands on Data Access
• Structured and unstructured data
• Massive amounts of data • Inexpensive horizontal
scaling• Apps and data in the
cloud• Social network features• …
5
New Types of Data Stores
6
We are not architects!
Integrating NoSQL Data Stores #1
http://www.flickr.com/photos/sakeeb/4087246274
7
Don’t re-invent the wheel!
Integrating NoSQL Data Stores #2
http://www.flickr.com/photos/dmott9/5921728819
8
There is some Spring!
Integrating NoSQL Data Stores #3
http://www.springsource.org/spring-data
9
Spring Data
• Same goals as the Spring Framework– Productivity improvement– Programming model consistency– Portability
• Umbrella for subprojects, specific to a given database• Mapping support for Java domain objects
• http://www.springsource.org/spring-data• http://github.com/SpringSource/spring-data-XXX
10
Spring Data – Overview #1
• JPA• JDBC Extensions
Relational Databases
• Apache Hadoop
Big Data
• GemFire
Data Grid
• REST
HTTP
• Redis• Riak
Key Value Stores
11
Spring Data – Overview #2
• Mongo DB• Couch DB (planned)
Document Stores
• Neo4J
Graph Databases
• HBase (planned)• Cassandra (planned)
Column Stores
• Amazon S3
Blob Stores
• Commons
Common Infrastructure
12
Spring Data – Key Features
• Low level data access API abstraction– MongoTemplate, RiakTemplate, Neo4jTemplate– Exception translation– Transaction management
• Object Mapping (Java to data store)• Generic Repository Support
– Basic CRUD, dynamic finders, pagination and sorting • Spring namespaces• Cross Store Persistence Programming Model
– @Entity, @Document, @NodeEntity
13
Spring Data MongoDB – Example
14
Spring Data MongoDB – Entity
Stored JSON:{ "_id" : ObjectId("4f9886290364b533b3acd4ce"), "_class" : "com.acme.hello.domain.Person", "name" : "Bob", "age" : 33 }
15
Spring Data MongoDB – Configuration
16
Spring Data MongoDB – Repository
17
Use a data model which really matches to your data …
Give it a try!
http://www.flickr.com/photos/juniorvelo/3267647833
18
Q & A
Patrick Baumgartnerpatrick.baumgartner [at] swiftmind [dot] comhttp://www.swiftmind.com http://www.twitter.com/patbaumgartner