2. Agenda
Spring Framework
Spring Data
Spring Data MongoDB
MongoDB-Template
Object Mapping
Repository Support
Beispiele
codecentric AG
3. Spring Framework
What is Spring?
Spring is the most popular application development
framework for enterprise Java™. Millions of
developers use Spring to create high
performing, easily testable, reusable code without
any lock-in.
Quelle: http://www.springsource.org
codecentric AG
4. Spring Framework
Leichgewichtes Framework für Java Enterprise Anwendungen
Kern: IoC-Container für Depedency Injection
Läuft ohne JEE-Server
Unterstützt viele Technologie-Stacks
codecentric AG
5. Spring Framework
Projekte
• Spring AMQP • Spring Mobile
• Spring for Android • Spring .NET
• Spring Batch • Spring Roo
• Spring Data • Spring Security
• Spring Framework • Spring Social
• Spring Gemfire • Spring Web Flow
• Spring Integration • Spring Web Services
Github: https://github.com/SpringSource
codecentric AG
6. Spring Data
Einheitliches Programmiermodell für RDBMS und NoSQL-Datastores
Spring Data
CrudRepository PagingAndSortingRepository
Spring Data Spring Data Spring Data Spring Data
JPA MongoDB Neo4j …
JpaRepository MongoRepository GraphRepository
MongoTemplate Neo4jTemplate
Embedded REST
JPA Mongo Java Driver
JDBC
RDBMS MongoDB Neo4j …
Quelle: http://www.infoq.com/articles/spring-data-intro
codecentric AG
7. Spring Data Allgemein
Template
Konfiguration von Ressourcen
Einheitliches Exception-Handling
Object Mapping
Annotationsbasiertes Mapping von Java-Objekten auf DB-Strukturen
(Tabellen, Collections, Nodes)
Convention over Configuration, viele sinnvolle Default Mappings
Repository Support
DAOs werden als Interfaces implementiert
Query-Implementierungen werden über Namenskonventionen abgeleitet
CRUD-Operation und Paging/Sortieren out-of-the-box
codecentric AG
8. Spring Data MongoDB
Template
Abstraktion vom MongoDB Java Driver
Konfiguration von mongod / mongos-Instanzen und Collections
Verwaltung von Collections
Map/Reduce-Aufrufe
Object Mapping
Annotationen @Document, @Field, @Index etc.
Klassen werden auf Collections abgebildet, Java-Objekte auf Dokumente
Repository Support
Schlüsselwörter werden auf Query-Operator abgebildet
Geospatial Queries
codecentric AG
9. MongoDB Template
Konfiguration
<!-- Connection to MongoDB server -->
<mongo:db-factory host="localhost" port="27017" dbname="test" />
<!-- MongoDB Template -->
<bean id="mongoTemplate"
class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>
Verwendung
@Autowired MongoTemplate template;
template.indexOps(Location.class).ensureIndex(
new GeospatialIndex("position") );
codecentric AG
11. MongoDB Template
Konfiguration für Replica Set:
<mongo:mongo
id="replicaSetMongo"
replica-set="127.0.0.1:27017,localhost:27018"
/>
codecentric AG
12. MongoDB Object Mapping
Code Beispiel: Persistenze Domainklasse „User“:
@Document(collection = "usr")
public class User {
@Id private String id;
@Indexed private String fullName;
private Date lastLogin;
...
}
codecentric AG
13. MongoDB Repository Support
Grundidee:
für Definition von Queries reicht die Signatur einer Methode, die Implementierung
wird zur Laufzeit daraus abgeleitet
Basis-Implementierungen vorhanden für
CRUD-Operationen
Blättern
Sortieren
codecentric AG
18. Was gibt‘s sonst noch?
Viele Konfigurationsmöglichkeiten
@CompoundIndex – zusammengesetzte Indexe auf Klassenebene
@Version – optimistisches Locking auf Anwendungsebene (neu in 1.1.0)
Template für GridFS-Unterstützung (neu in 1.1.0)
Geodaten-Unterstützung
Map/Reduce
codecentric AG
20. Quellennachweise
Spring Zitat: http://www.springsource.org
Spring Logo: https://twitter.com/springsource
Source Code Beispiele: https://github.com/ttrelle/spring-data-examples/
codecentric AG
21. QUESTION?
Tobias Trelle
codecentric AG
Merscheider Str. 1
42699 Solingen
tel +49 (0) 212.233628.47
fax +49 (0) 212.233628.79
mail Tobias.Trelle@codecentric.de
twitter @tobiastrelle
www.codecentric.de
blog.codecentric.de/author/tobias-trelle
www.xing.com/net/mongodb-dus
codecentric AG 08.10.2012 21