logo

Spring Boot H2 baza podataka

Što je baza podataka u memoriji

Baza podataka u memoriji oslanja se na memoriju sustava za razliku od prostora na disku za pohranu podataka. Budući da je pristup memoriji brži od pristupa disku. Bazu podataka u memoriji koristimo kada ne trebamo čuvati podatke. In-memory baza podataka je ugrađena baza podataka. Baze podataka u memoriji su nestabilne, prema zadanim postavkama, a svi pohranjeni podaci gube se kada ponovno pokrenemo aplikaciju.

Široko korištene baze podataka u memoriji su H2, HSQLDB (HyperSQL baza podataka) , i Apaški derbi. Automatski stvara konfiguraciju.

Postojanost u odnosu na bazu podataka u memoriji

Trajna baza podataka zadržava podatke u fizičkoj memoriji. Podaci će biti dostupni čak i ako je poslužitelj baze podataka odbijen. Neke popularne baze podataka postojanosti su Oracle, MySQL , Postgres , itd.

niz u cijele brojeve

U slučaju baza podataka u memoriji, pohraniti podatke u memorija sustava . Izgubio je podatke kada je program zatvoren. Korisno je za MALO s (Proof of Concepts), nije za proizvodnu aplikaciju. Široko korištena baza podataka u memoriji je H2.

Što je H2 baza podataka

H2 je ugrađeno, otvorenog koda, i u sjećanju baza podataka. To je sustav upravljanja relacijskom bazom podataka napisan u Java . To je klijent/poslužitelj primjena. Općenito se koristi u jedinično testiranje . Pohranjuje podatke u memoriju, ne zadržava ih na disku.

Prednosti

  • Nulta konfiguracija
  • Jednostavan je za korištenje.
  • Lagan je i brz.
  • Omogućuje jednostavnu konfiguraciju za prebacivanje između prave baze podataka i baze podataka u memoriji.
  • Podržava standardni SQL i JDBC API.
  • Omogućuje web konzolu za održavanje u bazi podataka.

Konfigurirajte H2 bazu podataka

Ako želimo koristiti H2 bazu podataka u aplikaciji, trebamo dodati sljedeću ovisnost u datoteku pom.xml:

 com.h2database h2 runtime 

Nakon dodavanja ovisnosti, moramo konfigurirati URL izvora podataka, naziv klase upravljačkog programa, korisničko ime, i lozinka H2 baze podataka. Spring Boot pruža jednostavan način za konfiguriranje ovih svojstava primjena.svojstva datoteka.

 spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 

u spring.datasource.url vlasništvo, mem je naziv baze podataka u memoriji i testdb je naziv sheme koju nudi H2, prema zadanim postavkama. Također možemo definirati vlastitu shemu i bazu podataka. Zadano korisničko ime je na a prazna lozinka označava an prazan lozinka. Ako želimo promijeniti korisničko ime i lozinku, možemo nadjačati ove vrijednosti.

Zadržite podatke u H2 bazi podataka

Ako želimo zadržati podatke u H2 bazi podataka, trebali bismo ih pohraniti u datoteku. Da bismo postigli isto, moramo promijeniti svojstvo URL izvora podataka.

 #persist the data spring.datasource.url=jdbc:h2:file:/data/sampledata spring.datasource.url=jdbc:h2:C:/data/sampledata 

U gornjem svojstvu, uzorci podataka je naziv datoteke.

Stvorite shemu i popunite podatke

Shemu možemo definirati stvaranjem a SQL datoteka u resurs mapa (src/main/resource).

shema.sql

 DROP TABLE IF EXISTS CITY; CREATE TABLE CITY ( City_code INT AUTO_INCREMENT PRIMARY KEY, city_name VARCHAR(50) NOT NULL, city_pincode INT(8) NOT NULL ); 

Podatke u tablici možemo popuniti stvaranjem a SQL datoteka u resurs mapa (src/main/resource).

podaci.sql

 INSERT INTO CITY VALUES (11, 'Delhi', 110001); INSERT INTO CITY VALUES (12, 'Kanpur', 208001); INSERT INTO CITY VALUES (13, 'Lucknow', 226001); 

Spring Boot automatski preuzima podaci.sql datoteku i pokrenite je u odnosu na H2 bazu podataka tijekom pokretanja aplikacije.

H2 konzola

Prema zadanim postavkama, prikaz konzole H2 baze podataka je onemogućen. Prije pristupa H2 bazi podataka, moramo je omogućiti korištenjem sljedećeg svojstva.

 #enabling the H2 console spring.h2.console.enabled=true 

Nakon što smo omogućili H2 konzolu, sada možemo pristupiti H2 konzoli u pregledniku pozivom na URL http://localhost:8080/h2-console. Sljedeća slika prikazuje prikaz konzole H2 baze podataka.

Spring Boot H2 baza podataka

Na gornjoj snimci zaslona definirali smo vlastitu bazu podataka pod nazivom javatpoint .

Primjer Spring Boot H2

Postavimo Spring Boot aplikaciju s H2 bazom podataka.

Korak 1: Otvorite Spring Initializr http://start.spring.io.

Korak 2: Odaberite verziju Spring Boot 2.3.0.M1.

Korak 2: Osigurajte Skupina Ime. Osigurali smo com.javatpoint.

Korak 3: Osigurajte Artefakt Iskaznica. Osigurali smo spring-boot-h2-baza-primjer.

Korak 5: Dodajte ovisnosti Spring Web, Spring Data JPA, i H2 baza podataka.

Korak 6: Klikni na Generirati dugme. Kada kliknemo na gumb Generiraj, on omotava projekt u a Staklenka datoteku i preuzima je na lokalni sustav.

Spring Boot H2 baza podataka

Korak 7: Ekstrakt Jar datoteku i zalijepite je u STS radni prostor.

Korak 8: Uvoz mapu projekta u STS.

Datoteka -> Uvoz -> Postojeći Maven projekti -> Pregledaj -> Odaberite mapu spring-boot-h2-database-example -> Završi

Za uvoz je potrebno neko vrijeme.

Korak 9: Napravite paket s imenom com.javatpoint.model u mapi src/glavni/java.

Korak 10: Stvorite klasu modela u paketu com.javatpoint.model. Napravili smo klasu modela s imenom Student. Na satu knjige radili smo sljedeće:

  • Definirajte četiri varijable ID, godine, ime, i
  • Generirajte Gettere i Settere.
    Desnom tipkom miša kliknite na datoteku -> Izvor -> Generiraj Getters i Setters.
  • Označi razred kao Entitet korištenjem anotacije @Entitet.
  • Označi razred kao Stol naziv pomoću napomene @Stol.
  • Definirajte svaku varijablu kao Stupac korištenjem anotacije @Stupac.

Student.java

isprobajte strukturu podataka
 package com.javatpoint.model; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; //mark class as an Entity @Entity //defining class name as Table name @Table public class Student { //mark id as primary key @Id //defining id as column name @Column private int id; //defining name as column name @Column private String name; //defining age as column name @Column private int age; //defining email as column name @Column private String email; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } 

Korak 11: Napravite paket s imenom com.javatpoint.kontroler u mapi src/glavni/java.

Korak 12: Napravite klasu Controller u paketu com.javatpoint.kontroler . Napravili smo klasu kontrolera s imenom Učenički kontroler . U klasi StudentController napravili smo sljedeće:

  • Označi razred kao RestController korištenjem anotacije @RestController.
  • Automatski ožičite StudentService razreda pomoću anotacije @Autoožičeni .
  • Definirajte sljedeće metode:
      getAllStudent():Vraća popis svih učenika.
  • getStudent():Vraća podatke o učeniku koje smo naveli u varijabli puta. Proslijedili smo id kao argument koristeći napomenu @PathVariable. Bilješka označava da bi parametar metode trebao biti vezan za varijablu URI predloška.izbrišiStudent():Briše određenog učenika kojeg smo naveli u varijabli puta.spremiStudent():To štedi detalje učenika. Bilješka @RequestBody označava da bi parametar metode trebao biti vezan za tijelo web zahtjeva.

StudentController.java

 package com.javatpoint.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import com.javatpoint.model.Student; import com.javatpoint.service.StudentService; //creating RestController @RestController public class StudentController { //autowired the StudentService class @Autowired StudentService studentService; //creating a get mapping that retrieves all the students detail from the database @GetMapping('/student') private List getAllStudent() { return studentService.getAllStudent(); } //creating a get mapping that retrieves the detail of a specific student @GetMapping('/student/{id}') private Student getStudent(@PathVariable('id') int id) { return studentService.getStudentById(id); } //creating a delete mapping that deletes a specific student @DeleteMapping('/student/{id}') private void deleteStudent(@PathVariable('id') int id) { studentService.delete(id); } //creating post mapping that post the student detail in the database @PostMapping('/student') private int saveStudent(@RequestBody Student student) { studentService.saveOrUpdate(student); return student.getId(); } } 

Korak 13: Napravite paket s imenom com.javatpoint.service u mapi src/glavni/java.

Korak 14: Stvoriti Servis razreda. Stvorili smo klasu usluge s imenom StudentService u paketu com.javatpoint.service.

StudentService.java

 package com.javatpoint.service; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.javatpoint.model.Student; import com.javatpoint.repository.StudentRepository; @Service public class StudentService { @Autowired StudentRepository studentRepository; //getting all student records public List getAllStudent() { List students = new ArrayList(); studentRepository.findAll().forEach(student -> students.add(student)); return students; } //getting a specific record public Student getStudentById(int id) { return studentRepository.findById(id).get(); } public void saveOrUpdate(Student student) { studentRepository.save(student); } //deleting a specific record public void delete(int id) { studentRepository.deleteById(id); } } 

Korak 15: Napravite paket s imenom com.javatpoint.repozitorij u mapi src/glavni/java.

Korak 16: Stvoriti Spremište sučelje. Stvorili smo sučelje repozitorija s imenom StudentRepository u paketu com.javatpoint.repozitorij. Proširuje Crud Repozitorij sučelje.

StudentRepository.java

 package com.javatpoint.repository; import org.springframework.data.repository.CrudRepository; import com.javatpoint.model.Student; public interface StudentRepository extends CrudRepository { } 

Sada ćemo konfigurirati izvor podataka URL, naziv klase upravljačkog programa, korisničko ime, i lozinka, u primjena.svojstva datoteka.

Korak 17: Otvori primjena.svojstva datoteku i konfigurirajte sljedeća svojstva.

primjena.svojstva

 spring.datasource.url=jdbc:h2:mem:javatpoint spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.jpa.database-platform=org.hibernate.dialect.H2Dialect #enabling the H2 console spring.h2.console.enabled=true 

Napomena: Ne zaboravite omogućiti H2 konzolu.

Nakon kreiranja svih klasa i paketa, direktorij projekta izgleda ovako.

Spring Boot H2 baza podataka

Sada ćemo pokrenuti aplikaciju.

Korak 18: Otvoren SpringBootH2DatabaseExampleApplication.java datoteku i pokrenite je kao Java aplikaciju.

SpringBootH2DatabaseExampleApplication.java

 package com.javatpoint; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootH2DatabaseExampleApplication { public static void main(String[] args) { SpringApplication.run(SpringBootH2DatabaseExampleApplication.class, args); } } 

U sljedećem koraku koristit ćemo rest client Poštar za slanje POST i DOBITI zahtjev . Ako Postman nije instaliran na vašem sustavu, slijedite korake u nastavku:

Korak 19: Otvori Poštar i učinite sljedeće:

  • Odaberite POST
  • Pozovite URL http://localhost:8080/student.
  • Odaberite Tijelo
  • Odaberite vrstu sadržaja JSON (aplikacija/json).
  • Unesite podatke. U tijelo smo unijeli sljedeće podatke:
 { 'id': '001', 'age': '23', 'name': 'Amit', 'email': '[email protected]' } 
  • Klikni na Poslati

Kada je zahtjev uspješno izvršen, prikazuje se Status: 200 OK . To znači da je zapis uspješno umetnut u bazu podataka.

Slično tome, umetnuli smo sljedeće podatke.

vrijednost niza
 { 'id': '002', 'age': '24', 'name': 'Vadik', 'email': '[email protected]' } { 'id': '003', 'age': '21', 'name': 'Prateek', 'email': '[email protected]' } { 'id': '004', 'age': '25', 'name': 'Harsh', 'email': '[email protected]' } { 'id': '005', 'age': '24', 'name': 'Swarit', 'email': '[email protected]' } 

Pristupimo H2 konzoli da vidimo podatke.

Korak 20: Otvorite preglednik i pozovite URL http://localhost:8080/h2-console. Klikni na Spojiti gumb, kao što je prikazano u nastavku.

Spring Boot H2 baza podataka

Nakon klika na Spojiti gumb, vidimo Student tablicu u bazi podataka, kao što je prikazano u nastavku.

Spring Boot H2 baza podataka

Korak 21: Klikni na Student tablicu, a zatim kliknite na Trčanje dugme. Tablica prikazuje podatke koje smo unijeli u tijelo.

Spring Boot H2 baza podataka

Korak 22: Otvorite Poštar i pošaljite a DOBITI zahtjev. Vraća podatke koje smo unijeli u bazu podataka.

Spring Boot H2 baza podataka

Pošaljimo a DOBITI zahtjev s URL-om http://localhost:8080/student/{id}. Pozvali smo URL http://localhost:8080/student/3. Vraća podatke o studentu čiji je ID 3.

Spring Boot H2 baza podataka

Slično tome, možemo poslati i a IZBRISATI zahtjev. Pretpostavimo da želimo izbrisati studentski zapis čiji je ID 2.

Za brisanje studentskog zapisa, pošaljite a IZBRISATI zahtjev s URL-om http://localhost:8080/student/2. Vidimo da student čija je id 2 je izbrisan iz baze podataka.

Spring Boot H2 baza podataka
Preuzmite primjer H2 baze podataka