Spring Boot met Hibernate

1. Overzicht

In dit artikel zullen we bekijken hoe u Spring Boot met Hibernate kunt gebruiken.

We gaan een eenvoudige Spring Boot-applicatie bouwen en zien hoe gemakkelijk het is om deze te integreren met Hibernate.

2. Bootstrapping van de applicatie

We gebruiken Spring Initializr om onze Spring Boot-applicatie op te starten. Voor dit voorbeeld gebruiken we alleen de benodigde configuraties en afhankelijkheden om Hibernate te integreren en Web, PPV, en H2 afhankelijkheden. We zullen deze afhankelijkheden in de volgende sectie uitleggen.

Laten we het project genereren en openen in onze IDE. We kunnen de gegenereerde projectstructuur controleren en de configuratiebestanden identificeren die we nodig hebben.

Dit is hoe de projectstructuur eruit zal zien:

3. Maven afhankelijkheden

Als we ons openstellen pom.xml, we zullen zien dat we het hebben spring-boot-starter-web en spring-boot-starter-test als maven afhankelijkheden. Zoals hun namen suggereren, zijn dit startafhankelijkheden in Spring Boot.

Laten we even kijken naar de afhankelijkheid die in JPA trekt:

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

Deze afhankelijkheid omvat JPA API, JPA-implementatie, JDBC en andere benodigde bibliotheken. Aangezien de standaard JPA-implementatie Hibernate is, is deze afhankelijkheid eigenlijk voldoende om deze ook binnen te halen.

Ten slotte gebruiken we H2 als een zeer lichtgewicht database voor dit voorbeeld:

 com.h2database h2 runtime 

We kunnen de H2-console gebruiken om te controleren of de DB actief is, ook voor een gebruiksvriendelijke GUI voor onze gegevensinvoer. Laten we doorgaan en het inschakelen application.properites:

spring.h2.console.enabled = true

Dit is alles wat we nodig hadden om te configureren om Hibernate en H2 voor ons voorbeeld op te nemen. We kunnen controleren of de configuratie succesvol was in de logboeken toen we de Spring Boot-applicatie opstartten:

HHH000412: Hibernate Core {#Version}

HHH000206: slaapstand. Eigenschappen niet gevonden

HCANN000001: Hibernate Commons-annotaties {#Version}

HHH000400: dialect gebruiken: org.hibernate.dialect.H2Dialect

We hebben nu toegang tot de H2-console op localhost: // localhost: 8080 / h2-console /.

4. Creëren van de entiteit

Om te controleren of onze H2 correct werkt, maken we eerst een PPV-entiteit in een nieuwe modellen map:

@Entity openbare klasse Boek {@Id @GeneratedValue privé Lange id; private String naam; // standaard constructeurs // standaard getters en setters}

We hebben nu een basisentiteit, waaruit H2 een tabel kan maken. De applicatie opnieuw opstarten en de H2-console controleren, een nieuwe tabel genaamd Boek zal gemaakt worden.

Om enkele initiële gegevens aan onze applicatie toe te voegen, moeten we een nieuw SQL-bestand maken, met enkele invoeginstructies en deze in onze middelen map. We kunnen gebruiken import.sql (Slaapstand-ondersteuning) of data.sql (Spring JDBC-ondersteuning) bestanden om gegevens te laden.

Hier zijn onze voorbeeldgegevens:

invoegen in boekwaarden (1, 'The Tartar Steppe'); invoegen in boekwaarden (2, 'Poem Strip'); invoegen in boekwaarden (3, 'Restless Nights: Selected Stories of Dino Buzzati');

Nogmaals, we kunnen de Spring Boot-applicatie opnieuw opstarten en de H2-console controleren - de gegevens bevinden zich nu in het Boek tafel.

5. Creëren van de repository en service

We gaan door met het maken van de basiscomponenten om onze applicatie te testen. Laten we eerst de JPA-opslagplaats toevoegen aan een nieuw opslagplaatsen map:

@Repository openbare interface BookRepository breidt JpaRepository uit {}

We kunnen de JpaRepository interface van het Spring-framework, dat een standaardimplementatie biedt voor het basis CRUD operaties.

Laten we vervolgens de Boekservice in een nieuw Diensten map:

@Service openbare klasse BookService {@Autowired privé BookRepository bookRepository; openbare lijstlijst () {return bookRepository.findAll (); }}

Om onze applicatie te testen, moeten we controleren of de gemaakte gegevens kunnen worden opgehaald uit het lijst() methode van de dienst.

We schrijven het volgende SpringBootTest:

@RunWith (SpringRunner.class) @SpringBootTest openbare klasse BookServiceUnitTest {@Autowired privé BookService bookService; @Test openbare leegte whenApplicationStarts_thenHibernateCreatesInitialRecords () {List books = bookService.list (); Assert.assertEquals (books.size (), 3); }}

Door deze test uit te voeren, kunnen we controleren of Hibernate het Boek gegevens die vervolgens met succes worden opgehaald door onze service. Dat was het, Hibernate draait met Spring Boot.

6. Tabelnaam in hoofdletters

Soms moeten we de tabelnamen in onze database in hoofdletters laten schrijven. Zoals we al weten, Standaard genereert Hibernate de namen van de tabellen in kleine letters.

We kunnen ook proberen om de tabelnaam expliciet in te stellen, zoals hier:

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

Dat zou echter niet werken. Wat werkt, is deze eigenschap in te stellen application.properties:

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

Als gevolg hiervan kunnen we in onze database controleren of de tabellen met succes zijn gemaakt met hoofdletters.

7. Conclusie

In dit artikel hebben we bekeken hoe eenvoudig het is om Hibernate te integreren met Spring Boot. We hebben de H2-database gebruikt als een zeer lichtgewicht in-memory-oplossing.

We hebben een volledig voorbeeld gegeven van een applicatie die al deze technologieën gebruikt en uiteindelijk hebben we ook een kleine hint gegeven over hoe we de tabelnamen in hoofdletters in onze database kunnen zetten.

Zoals altijd zijn alle codefragmenten die in dit artikel worden genoemd, te vinden op onze GitHub-repository.