Spring Boot: Ordnerstruktur

RezaScript

Bekanntes Mitglied
Hallo,

ich habe etwas Mühe mit der Ordner-Strukturierung in Spring Boot. Ich benutze folgende Packages:
  • controller
  • service
  • dao
  • model
  • config
  • security
Meine Verwirrung liegt bei dao, model und repository.

Wenn ich es richtig verstanden habe, ist model für Getters und Setters und dao ist für die Logik der Datenbank. Mit model und dao habe ich ja schon alles was ich brauche. Wofür ist dann repository da?
 

KonradN

Super-Moderator
Mitarbeiter
model für Getters und Setters und dao ist für die Logik der Datenbank.
Das verstehe ich nicht wirklich. model sind die Klassen, die sozusagen Deine Daten abbilden.
DAO steht für Data Access Object - und das wäre der Code, der auf die Datenbank zugreift. Das kannst Du natürlich machen, also mit Code wie er z.B. in https://www.baeldung.com/java-dao-pattern beschrieben wurde), aber dann hast Du keine Repositories. Oft nutzt man in Spring Boot einfach Repositories, d.h. man hat nur ein Interface, das z.B. CrudRepository erweitert. Das bedeutet dann, dass man diese DAO Logik nicht schreibt nutzt. Wie das aussehen kann, sieht man z.B. unter https://www.baeldung.com/spring-data-crud-repository-save

Das sind also zwei unterschiedliche Wege, die man beschreiten könnte. Und wenn Du Deine Klassen nach "Typ" in packages strukturierst, dann hast du meiner Meinung nach entweder das eine oder das andere (Wobei man das bestimmt auch mixen könnte :) )
 

RezaScript

Bekanntes Mitglied
Danke @KonradN ! Gibt es für Spring Boot denn irgendeine Naming Convention, die man folgen sollte? Mich verwirrt es immer, wenn ich Tutorials folge, die immer eine andere Struktur vorgehen als ich.

Mit Symfony (PHP) bin ich oft so vorgegangen:
  • Entity - Getters und Setters
  • Repository - eigene Klassen, welche die Klasse ServiceEntityRepository erweitern
  • Dao - Klassen, die auf Repositorys zugreifen
 

DrPils

Bekanntes Mitglied
Danke @KonradN ! Gibt es für Spring Boot denn irgendeine Naming Convention, die man folgen sollte? Mich verwirrt es immer, wenn ich Tutorials folge, die immer eine andere Struktur vorgehen als ich.

Mit Symfony (PHP) bin ich oft so vorgegangen:
  • Entity - Getters und Setters
  • Repository - eigene Klassen, welche die Klasse ServiceEntityRepository erweitern
  • Dao - Klassen, die auf Repositorys zugreifen

Also Entities sind eigentlich Klassen die eine Tabelle (bei Tabellarischen Datenbanken) in deiner Datenbank wiederspiegeln, jedes Objekt dieser Klasse ist dann ein Eintrag in deiner Tabelle. Angenommen du hast eine Datenbank mit Cars, dann wird die Klasse entweder Car oder CarEntity benannt.
Repositories dienen dazu den Datenzugriff leicht zu gestallten. Also du musst dich nicht um irgendwelche Datenbank verbindungen oder queries etc kümmern. Das ist alles in den Repositories ausgelagert. Was du tust ist die Methode von den Repositories aufzurufen. Wie Konrad schon sagte liefert dir Spring Boot diese schon mit und du musst sie nicht selbst schreiben. Bennant werden diese idr mit deinem Entity als Prefix gefolgt von Repository, also CarRepository.
Die Klassen die auf die Repositories zugreifen nennt man Service, in denen findet dann Logik wie zb das Mappen der Objekte statt. Diese heissen dann auch meistens wie das Entity das behandelt wird: CarService.
 

Ähnliche Java Themen

Neue Themen


Oben