Mongodb Unterschied MongoClient und Repository.

Raphael_

Aktives Mitglied
Hi,
ich habe eine monogdb Datenbank und habe dort ein Tutorial verfolgt, wo ein UserRepository erstellt wurde um einen neuen User in der Mongodb anzulegen und die connection dann in der .yml Datei erstellt wird. Jetzt möchte ich bei bestimmten usern Daten einspielen und im Internet finde ich nur Informationen, wo in der Klasse ein MongoClient usw erstellt wird und dann damit mit der Mongodb kommuniziert wird. Deshalb wollte ich jetzt fragen, was denn genau der Unterschied zwischen einem Repository und einer solchen connection mithilfe eines MongoClients. Und wenn ich dann Daten bei einem bestimmten User einspielen möchte, wie macht man das dann am besten? Über den MongoClient oder mithilfe eines Repositories.
 
Ich denke, Du wirfst da einiges durcheinander.

Du hast erst einmal die MongoDB - das ist eine dokumentenbasierte NOSQL Datenbank. Auf diese kannst Du in Java mit Hilfe des Java Clients zugreifen. Wenn Du das machst, dann verbindest Du Dich mit dem Client, holst die Datenbank und machst dann die Abfragen mit denen Du dann Elemente hinzu fügst oder entfernst. Diese Elemente sind dann Dokumente (daher das Dokumentanbasiert) und diese werden in Collections (also Sammlungen) abgelegt.

Jetzt kannst Du das alles manuell machen. Da wir Software Entwickler aber alle recht faul sind, haben wir darauf wenig Lust. Daher nutzen wir Libraries, die uns diese Arbeit abnehmen. Diese Libraries haben oft eine andere Sicht. Nehmen wir einmal Spring Boot:
Hier schreibst Du Datenklassen (Entities), mit denen du arbeiten willst. Da kann es also z.B. eine Entity User geben.
Verwaltet wird eine Entity mit einem Repository. So wird es für den User ein UserRepository geben.
Und da wir faul sind: Da schreiben wir die Klasse nicht selbst sondern wir geben Spring Boot nur Hinweise, was wie brauchen. Einiges kann das Framework dann alleine. So sage ich im Interface nur, dass ich eine Methode findById oder findByName haben will und das Framework baut dann entsprechenden Code eigenständig auf. Und wenn es komplexere Abfragen gibt, dann mache ich nur die Methode und gebe noch eine Annotation mit Abfragedetails dazu. Mit wird also sehr viel Arbeit abgenommen vom Spring Framework.

Du hast also einmal Begriffe, die auf der MongoDB üblich sind: Datenbank, Collections, Dokumente, ...
und dann Begriffe, die auf Framework Seite verwendet werden wie Entity, Repository, ...

Habe ich Deine Frage richtig verstanden und konnte ich helfen?
 
Ich denke, Du wirfst da einiges durcheinander.

Du hast erst einmal die MongoDB - das ist eine dokumentenbasierte NOSQL Datenbank. Auf diese kannst Du in Java mit Hilfe des Java Clients zugreifen. Wenn Du das machst, dann verbindest Du Dich mit dem Client, holst die Datenbank und machst dann die Abfragen mit denen Du dann Elemente hinzu fügst oder entfernst. Diese Elemente sind dann Dokumente (daher das Dokumentanbasiert) und diese werden in Collections (also Sammlungen) abgelegt.

Jetzt kannst Du das alles manuell machen. Da wir Software Entwickler aber alle recht faul sind, haben wir darauf wenig Lust. Daher nutzen wir Libraries, die uns diese Arbeit abnehmen. Diese Libraries haben oft eine andere Sicht. Nehmen wir einmal Spring Boot:
Hier schreibst Du Datenklassen (Entities), mit denen du arbeiten willst. Da kann es also z.B. eine Entity User geben.
Verwaltet wird eine Entity mit einem Repository. So wird es für den User ein UserRepository geben.
Und da wir faul sind: Da schreiben wir die Klasse nicht selbst sondern wir geben Spring Boot nur Hinweise, was wie brauchen. Einiges kann das Framework dann alleine. So sage ich im Interface nur, dass ich eine Methode findById oder findByName haben will und das Framework baut dann entsprechenden Code eigenständig auf. Und wenn es komplexere Abfragen gibt, dann mache ich nur die Methode und gebe noch eine Annotation mit Abfragedetails dazu. Mit wird also sehr viel Arbeit abgenommen vom Spring Framework.

Du hast also einmal Begriffe, die auf der MongoDB üblich sind: Datenbank, Collections, Dokumente, ...
und dann Begriffe, die auf Framework Seite verwendet werden wie Entity, Repository, ...

Habe ich Deine Frage richtig verstanden und konnte ich helfen?
Danke, das war hilfreich, aber wann genau verwende ich denn ein Repository? Ist der best practice einfach immer über das Repository zuzugreifen? Und wenn ich jetzt Daten in ein Document hinzufügen möchte, schreibe ich dann einfach ins Repository die Daten rein?
Und wenn man das am besten alles über ein repository macht, wozu ist denn dann dieser Mongoclient überhaupt da?
 
Wenn Du mit z.B. Spring Boot arbeitest, dann nutzt Du für Datenzugriffe das Repository und du hast keinen direkten Zugriff auf den MongoDB Java Client. Der Client wird intern vom Spring Framework genutzt, aber das kann Dir egal sein.
 

Zurück
Oben