Spring Boot mit Ruhezustand

1. Übersicht

In diesem Artikel sehen wir uns an, wie Spring Boot mit Hibernate verwendet wird.

Wir werden eine einfache Spring Boot-Anwendung erstellen und sehen, wie einfach es ist, sie in Hibernate zu integrieren.

2. Bootstrapping der Anwendung

Wir werden Spring Initializr verwenden, um unsere Spring Boot-Anwendung zu booten. In diesem Beispiel werden nur die erforderlichen Konfigurationen und Abhängigkeiten verwendet, um den Ruhezustand zu integrieren und Web- , JPA- und H2- Abhängigkeiten hinzuzufügen . Wir werden diese Abhängigkeiten im nächsten Abschnitt erklären.

Lassen Sie uns das Projekt generieren und in unserer IDE öffnen. Wir können die generierte Projektstruktur überprüfen und die benötigten Konfigurationsdateien identifizieren.

So sieht die Projektstruktur aus:

3. Maven-Abhängigkeiten

Wenn wir pom.xml öffnen , werden wir sehen, dass wir Spring-Boot-Starter-Web und Spring-Boot-Starter-Test als Maven-Abhängigkeiten haben. Wie der Name schon sagt, beginnen diese Abhängigkeiten in Spring Boot.

Lassen Sie uns einen kurzen Blick auf die Abhängigkeit werfen, die JPA einbezieht:

 org.springframework.boot spring-boot-starter-data-jpa 

Diese Abhängigkeit umfasst die JPA-API, die JPA-Implementierung, JDBC und andere benötigte Bibliotheken. Da die Standard-JPA-Implementierung "Ruhezustand" ist, reicht diese Abhängigkeit tatsächlich aus, um sie ebenfalls einzuführen.

Schließlich verwenden wir H2 als sehr einfache Datenbank für dieses Beispiel:

 com.h2database h2 runtime 

Wir können die H2-Konsole verwenden, um zu überprüfen, ob die Datenbank aktiv ist, sowie eine benutzerfreundliche Benutzeroberfläche für unsere Dateneingabe. Lassen Sie uns fortfahren und es in application.properites aktivieren :

spring.h2.console.enabled=true

Dies ist alles, was wir konfigurieren müssen, um Hibernate und H2 für unser Beispiel einzuschließen. Wir können überprüfen, ob die Konfiguration in den Protokollen erfolgreich war, wenn wir die Spring Boot-Anwendung starten:

HHH000412: Hibernate Core {#Version}

HHH000206: hibernate.properties nicht gefunden

HCANN000001: Hibernate Commons Annotations {#Version}

HHH000400: Verwenden des Dialekts: org.hibernate.dialect.H2Dialect

Wir können jetzt auf die H2-Konsole unter localhost: // localhost: 8080 / h2-console / zugreifen .

4. Erstellen der Entität

Um zu überprüfen , dass unsere H2 richtig funktioniert, werden wir zunächst eine JPA - Entität in einem neuen erstellen Modelle Ordner:

@Entity public class Book { @Id @GeneratedValue private Long id; private String name; // standard constructors // standard getters and setters }

Wir haben jetzt eine grundlegende Entität, aus der H2 eine Tabelle erstellen kann. Wenn Sie die Anwendung neu starten und die H2-Konsole überprüfen, wird eine neue Tabelle mit dem Namen " Buch " erstellt.

Um unserer Anwendung einige Anfangsdaten hinzuzufügen, müssen wir eine neue SQL-Datei mit einigen Einfügeanweisungen erstellen und in unseren Ressourcenordner legen . Wir können import.sql (Hibernate-Unterstützung) oder data.sql (Spring JDBC-Unterstützung) verwenden, um Daten zu laden.

Hier sind unsere Beispieldaten:

insert into book values(1, 'The Tartar Steppe'); insert into book values(2, 'Poem Strip'); insert into book values(3, 'Restless Nights: Selected Stories of Dino Buzzati');

Auch hier können wir die Spring Boot-Anwendung neu starten und die H2-Konsole überprüfen - die Daten befinden sich jetzt in der Book- Tabelle.

5. Repository und Service erstellen

Wir werden weiterhin die grundlegenden Komponenten erstellen, um unsere Anwendung zu testen. Fügen wir zunächst das JPA-Repository in einen neuen Repositorys- Ordner ein:

@Repository public interface BookRepository extends JpaRepository { }

Wir können die JpaRepository- Schnittstelle aus dem Spring-Framework verwenden, die eine Standardimplementierung für die grundlegenden CRUD- Operationen bereitstellt .

Als Nächstes fügen wir den BookService in einen neuen Dienstordner ein :

@Service public class BookService { @Autowired private BookRepository bookRepository; public List list() { return bookRepository.findAll(); } }

Um unsere Anwendung zu testen, müssen wir überprüfen, ob die erstellten Daten von der list () -Methode des Dienstes abgerufen werden können .

Wir werden den folgenden SpringBootTest schreiben :

@RunWith(SpringRunner.class) @SpringBootTest public class BookServiceUnitTest { @Autowired private BookService bookService; @Test public void whenApplicationStarts_thenHibernateCreatesInitialRecords() { List books = bookService.list(); Assert.assertEquals(books.size(), 3); } }

Durch diesen Test läuft, können wir überprüfen, ob Hibernate die erstellten Buchdaten , die dann erfolgreich durch unseren Service geholt. Das war es, Hibernate läuft mit Spring Boot.

6. Name der Tabelle in Großbuchstaben

Sometimes we may need to have the table names in our database written in uppercase letters. As we already know, by default Hibernate will generate the names of the tables in lowercase letters.

We could also try to explicitly set the table name, like this:

@Entity(name="BOOK") public class Book { // members, standard getters and setters }

However, that wouldn't work. What works is setting this property in application.properties:

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

As a result, we can check in our database that the tables are created successfully with uppercase letters.

7. Conclusion

In this article, we looked at how easy it is to integrate Hibernate with Spring Boot. We used the H2 database, as a very lightweight in-memory solution.

Wir haben ein vollständiges Beispiel für eine Anwendung gegeben, die all diese Technologien verwendet, und schließlich haben wir auch einen kleinen Hinweis gegeben, wie die Tabellennamen in unserer Datenbank in Großbuchstaben gesetzt werden.

Wie immer finden Sie alle in diesem Artikel erwähnten Codefragmente in unserem GitHub-Repository.