Your SlideShare is downloading. ×
MongoDB Munich 2012: Spring Data MongoDB
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

MongoDB Munich 2012: Spring Data MongoDB


Published on

Einführung in Spring Data MongoDB auf der Konferenz MongoDB Munich 2012

Einführung in Spring Data MongoDB auf der Konferenz MongoDB Munich 2012

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. MongoDB Munich 2012:Einführung in Spring Data / @tobiastrellecodecentric AG
  • 2. Agenda Spring Framework Spring Data Spring Data MongoDB MongoDB-Template Object Mapping Repository Support Beispielecodecentric AG
  • 3. Spring FrameworkWhat 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.orgcodecentric 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-Stackscodecentric AG
  • 5. Spring FrameworkProjekte• 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 ServicesGithub: AG
  • 6. Spring DataEinheitliches 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: AG
  • 7. Spring Data AllgemeinTemplate Konfiguration von Ressourcen Einheitliches Exception-HandlingObject Mapping Annotationsbasiertes Mapping von Java-Objekten auf DB-Strukturen (Tabellen, Collections, Nodes) Convention over Configuration, viele sinnvolle Default MappingsRepository Support DAOs werden als Interfaces implementiert Query-Implementierungen werden über Namenskonventionen abgeleitet CRUD-Operation und Paging/Sortieren out-of-the-boxcodecentric AG
  • 8. Spring Data MongoDBTemplate Abstraktion vom MongoDB Java Driver Konfiguration von mongod / mongos-Instanzen und Collections Verwaltung von Collections Map/Reduce-AufrufeObject Mapping Annotationen @Document, @Field, @Index etc. Klassen werden auf Collections abgebildet, Java-Objekte auf DokumenteRepository Support Schlüsselwörter werden auf Query-Operator abgebildet Geospatial Queriescodecentric AG
  • 9. MongoDB TemplateKonfiguration <!-- Connection to MongoDB server --> <mongo:db-factory host="localhost" port="27017" dbname="test" /> <!-- MongoDB Template --> <bean id="mongoTemplate" class=""> <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/> </bean>Verwendung @Autowired MongoTemplate template; template.indexOps(Location.class).ensureIndex( new GeospatialIndex("position") );codecentric AG
  • 10. MongoDB TemplateAusführliche Konfiguration der Mongo Connection:<mongo:mongo host="${}" port="${mongo.port}"> <mongo:options connections-per-host="${mongo.connectionsPerHost}„ threads-allowed-to-block-for-connection multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}„ connect-timeout="${mongo.connectTimeout}„ max-wait-time="${mongo.maxWaitTime}„ auto-connect-retry="${mongo.autoConnectRetry}„ socket-keep-alive="${mongo.socketKeepAlive}„ socket-timeout="${mongo.socketTimeout}„ slave-ok="${mongo.slaveOk}„ write-number="1„ write-timeout="0„ write-fsync="true"/></mongo:mongo><mongo:db-factory dbname= "test" mongo-ref="mongo"/>codecentric AG
  • 11. MongoDB TemplateKonfiguration für Replica Set:<mongo:mongo id="replicaSetMongo" replica-set=",localhost:27018"/>codecentric AG
  • 12. MongoDB Object MappingCode 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 Sortierencodecentric AG
  • 14. MongoDB Repository SupportKonfiguration <!-- Package w/ automagic repositories --> <mongo:repositories base-package="mongodb" />Implementierung public interface UserRepository extends MongoRepository<User, String> { List<User> findByFullNameLike(String fullName, Sort sort); @Query("{ fullName: ?0 }") List<User> findByTheUsersFullName(String fullName); }codecentric AG
  • 15. MongoDB Repository SupportVerwendung@Autowired UserRepository repo;...List<User> users;// custom finderusers = repo.findByFullNameLike("^User", null);// paging & general finderPage<User> page = repo.findAll( new PageRequest(2, 2 ) );users = page.getContent();codecentric AG
  • 16. Alles auf einen Blickcodecentric AG
  • 17. Live Democodecentric 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/Reducecodecentric AG
  • 19. MongoDB User-Gruppen in Düsseldorf / Frankfurt MongoDB User-Gruppe Düsseldorf @MongoDUS Contact: Tobias Trelle MongoDB User-Gruppe Frankfurt/Main @MongoFFM Contact: Uwe Seilercodecentric AG
  • 20. Quellennachweise Spring Zitat: Spring Logo: Source Code Beispiele: AG
  • 21. QUESTION?Tobias Trellecodecentric AGMerscheider Str. 142699 Solingentel +49 (0) 212.233628.47fax +49 (0) 212.233628.79mail Tobias.Trelle@codecentric.detwitter AG 08.10.2012 21