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.
 

KonradN

Super-Moderator
Mitarbeiter
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?
 

Raphael_

Aktives Mitglied
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?
 

KonradN

Super-Moderator
Mitarbeiter
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.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Mongodb testen bzw mocken Datenbankprogrammierung 3
R Mongodb Daten werden immer überschrieben Datenbankprogrammierung 7
R Mongodb tree Architektur Datenbankprogrammierung 6
R Mongodb Daten in einem bestimmten Document speichern Datenbankprogrammierung 1
R Mongodb Authentication failed Datenbankprogrammierung 6
R Beste Lösung für User Erstellung in mongodb Datenbankprogrammierung 1
6 MongoDB Dokument basierend auf Referenz finden Datenbankprogrammierung 1
MongoDB-Datenbank in Androidstudio einbinden Datenbankprogrammierung 1
T Spring MongoDB: Auswertung schlägt fehl Datenbankprogrammierung 1
T Spring MongoDB: Prüfen ob bereits eine Email existiert Datenbankprogrammierung 15
T Spring MongoDB @Indexed(unique=true) Datenbankprogrammierung 0
T Spring MongoDB self-reference Datenbankprogrammierung 2
N MongoDB Datenbankprogrammierung 5
S MongoDB löschung ohne Cascade Datenbankprogrammierung 1
OnDemand MySQL und mongoDB wann macht was Sinn? Datenbankprogrammierung 11
S MongoDB Community Edition Datenbankprogrammierung 1
S MongoDB - Abfrageergebnis in Array speichern Datenbankprogrammierung 2
C Über Classpath MongoDB Treiber einbinden und korrekte import Pfade Datenbankprogrammierung 8
B MongoDB- Queryception Datenbankprogrammierung 6
M MongoDb Versändnis Fragen: ( multiserver, morphia/morphium ) Datenbankprogrammierung 0
A MongoDB Passwort Problem Datenbankprogrammierung 0
T MongoDB: Morphia REST 505 Exception Tomcat Datenbankprogrammierung 2
G MongoDB - klassisches one to many Datenbankprogrammierung 2
P MongoDB vs. andere DBs Datenbankprogrammierung 0
D Daten posten auf RestApi (Mongodb/NoSQL) Datenbankprogrammierung 0
F MSSql oder MongoDB für die Speicherung von POI Datenbankprogrammierung 9
J Unterschied @Id und @Access? Datenbankprogrammierung 5
D Unterschied merge() und persist Datenbankprogrammierung 3
G Unterschied zwischen JPA und Hibernate? Datenbankprogrammierung 1
S Unterschied JavaDB JDBC? Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben