# Spring Boot vs Spring Data vs Hibernate > "Das is wie wenn du ein Haus mit einem Swimming Pool vergleichst. > > Sie sind vielleicht aus den gleichen Materialien und ein Pool kann in einem Haus sein aber eigentlich habens nicht viel gemeinsam" > -- Fabian Suda, 26.04.2023, Wien ![](https://i.imgur.com/LnOHTBH.png =350x) ## Spring Boot: Nimmt dir einiges an DevOps Aufwand ab (weil früher wars anscheinend sau schwer eine Java Applikation zu starten) Containerisiert quasi die Applikation und hat schon einen Webserver integriert (Tomcat, Apache, wos a immer, ...) Jetzt ergibt der Slogan auch Sinn "Applications that just run" Bietet Abstraktionshilfe für (Security)Configuration, REST API Definition, ... Basically **alles was damit zu tun hat wie externe User/Applikationen mit dem Backend interagieren** ## Spring Data: Spring Data ist am anderen Ende und **erleichtert die Kommunikation mit der Datenbank** (Mapping Beans and DB, no need to write SQL Statements anymore, CRUD, HATEOS, ...) Integriert Libraries für alle möglichen DBs und so Zum Beispiel verwenden wir Spring Data MongoDB, wos lauter Methoden gibt mit spezifisch MongoDB zu kommunizieren. Spring Data kann mit Hibernate, ohne Hibernate und statt Hibernate verwendet werden, je nach dem was du von SpringData verwendest Wenn du Spring Data JPA verwendest, verwendest du Hibernate - würde dir ermöglichen die DB dependencies großteils aus dem Backend zu entfernen (I think?) und DBs ohne viel Aufwand auszutauschen ![](https://i.imgur.com/VaZ5NIo.png) src: Wenn man in Intellij a neues Spring Boot Projekt aufsetzt, bei den Dependencies Wir überspringen diese Abstraktionsebene und sind an MongoDB fix gebunden, weil wir dieses Package `org.springframework.data.mongodb` verwenden (außerdem is MongoDB NoSQL). ## Hibernate Übernimmt den ganzen Schas, den du mit JDBC machen müsstest. Hibernate ist prinzipiell DB agnostisch, aber kann nicht mit NoSQL (nicht relationalen) DBs verwendet werden