logo

Spring Boot H2 -tietokanta

Mikä on muistissa oleva tietokanta

Muistissa oleva tietokanta luottaa järjestelmämuistiin, toisin kuin levytila ​​tietojen tallentamiseen. Koska muistin käyttö on nopeampaa kuin levyn käyttö. Käytämme muistissa olevaa tietokantaa, kun meidän ei tarvitse säilyttää tietoja. Muistissa oleva tietokanta on sulautettu tietokanta. Muistissa olevat tietokannat ovat oletusarvoisesti haihtuvia, ja kaikki tallennetut tiedot menetetään, kun käynnistämme sovelluksen uudelleen.

Laajalti käytetyt muistin sisäiset tietokannat ovat H2, HSQLDB (HyperSQL-tietokanta) , ja Apache Derby. Se luo kokoonpanon automaattisesti.

Pysyvyys vs. muistissa oleva tietokanta

Pysyvä tietokanta säilyttää tiedot fyysisessä muistissa. Tiedot ovat käytettävissä, vaikka tietokantapalvelinta palautettaisiin. Jotkut suositut pysyvyystietokannat ovat Oraakkeli, MySQL , Postgres , jne.

Kun kyseessä on muistissa oleva tietokanta, tietovarastossa järjestelmämuisti . Se menetti tiedot, kun ohjelma suljetaan. Siitä on apua VÄHÄN s (Proof of Concepts), ei tuotantosovellukseen. Laajalti käytetty muistitietokanta on H2.

Mikä on H2-tietokanta

H2 on sulautettu, avoimen lähdekoodin, ja muistissa tietokanta. Se on sisäänkirjoitettu relaatiotietokannan hallintajärjestelmä Java . Se on a asiakas/palvelin sovellus. Sitä käytetään yleensä mm yksikkötestaus . Se tallentaa tiedot muistiin, ei säilytä tietoja levyllä.

Edut

  • Nolla konfiguraatio
  • Sitä on helppo käyttää.
  • Se on kevyt ja nopea.
  • Se tarjoaa yksinkertaisen konfiguroinnin vaihtaaksesi todellisen tietokannan ja muistin tietokannan välillä.
  • Se tukee tavallisia SQL- ja JDBC-sovellusliittymiä.
  • Se tarjoaa verkkokonsolin, jota voidaan ylläpitää tietokannassa.

Määritä H2-tietokanta

Jos haluamme käyttää H2-tietokantaa sovelluksessa, meidän on lisättävä seuraava riippuvuus pom.xml-tiedostoon:

 com.h2database h2 runtime 

Kun olet lisännyt riippuvuuden, meidän on määritettävä tietolähteen URL-osoite, ohjainluokan nimi, käyttäjänimi, ja Salasana H2-tietokannasta. Spring Boot tarjoaa helpon tavan määrittää nämä ominaisuudet application.properties tiedosto.

 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 

Vuonna spring.datasource.url omaisuutta, mem on muistissa olevan tietokannan nimi ja testdb on skeeman nimi, jonka H2 tarjoaa oletuksena. Voimme myös määritellä oman skeemamme ja tietokantamme. Oletuskäyttäjätunnus on päällä ja tyhjä salasana tarkoittaa an tyhjä Salasana. Jos haluamme vaihtaa käyttäjätunnuksen ja salasanan, voimme ohittaa nämä arvot.

Säilytä tiedot H2-tietokannassa

Jos haluamme säilyttää tiedot H2-tietokannassa, meidän tulee tallentaa tiedot tiedostoon. Saavuttaaksemme saman meidän on muutettava tietolähteen URL-ominaisuutta.

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

Yllä olevassa kiinteistössä näytetiedot on tiedostonimi.

Luo skeema ja täytä tiedot

Voimme määritellä skeeman luomalla a SQL tiedosto tiedostoon resurssi kansio (src/main/resource).

schema.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 ); 

Voimme täyttää tiedot taulukkoon luomalla a SQL tiedosto tiedostoon resurssi kansio (src/main/resource).

data.sql

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

Spring Boot poimii automaattisesti data.sql tiedosto ja suorita se H2-tietokantaa vastaan ​​sovelluksen käynnistyksen aikana.

H2 konsoli

Oletusarvoisesti H2-tietokannan konsolinäkymä on poistettu käytöstä. Ennen kuin pääset H2-tietokantaan, meidän on otettava se käyttöön käyttämällä seuraavaa ominaisuutta.

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

Kun olemme ottaneet käyttöön H2-konsolin, voimme nyt käyttää H2-konsolia selaimessa kutsumalla URL-osoitetta http://localhost:8080/h2-console. Seuraava kuva esittää H2-tietokannan konsolinäkymää.

q1 q2 q3 q4
Spring Boot H2 -tietokanta

Yllä olevassa kuvakaappauksessa olemme määrittäneet oman tietokantamme nimeltä javatpoint .

Spring Boot H2 Esimerkki

Perustetaan Spring Boot -sovellus H2-tietokannan kanssa.

Vaihe 1: Avaa Spring Initializr http://start.spring.io.

Vaihe 2: Valitse Spring Boot -versio 2.3.0.M1.

Vaihe 2: Tarjoa Ryhmä nimi. Olemme tarjonneet com.javatpoint.

Vaihe 3: Tarjoa Esine Id. Olemme tarjonneet spring-boot-h2-tietokanta-esimerkki.

Vaihe 5: Lisää riippuvuudet Spring Web, Spring Data JPA , ja H2-tietokanta.

Vaihe 6: Klikkaa Tuottaa -painiketta. Kun napsautamme Luo-painiketta, se käärii projektin a Jar tiedosto ja lataa se paikalliseen järjestelmään.

Spring Boot H2 -tietokanta

Vaihe 7: Ottaa talteen Jar-tiedosto ja liitä se STS-työtilaan.

Vaihe 8: Tuonti projektikansio STS:ään.

git pull origin master

Tiedosto -> Tuo -> Olemassa olevat Maven-projektit -> Selaa -> Valitse kansio spring-boot-h2-database-example -> Valmis

Tuonti kestää jonkin aikaa.

Vaihe 9: Luo paketti nimellä com.javatpoint.model kansiossa src/main/java.

Vaihe 10: Luo malliluokka pakettiin com.javatpoint.model. Olemme luoneet malliluokan nimellä Opiskelija. Kirjat-luokassa olemme tehneet seuraavaa:

  • Määrittele neljä muuttujaa id, ikä, nimi, ja
  • Luo Gettereitä ja settereitä.
    Napsauta tiedostoa hiiren kakkospainikkeella -> Source -> Generate Getters and Setters.
  • Merkitse luokka nimellä Entiteetti käyttämällä huomautusta @Entiteetti.
  • Merkitse luokka nimellä Pöytä nimeä käyttämällä huomautusta @Pöytä.
  • Määrittele jokainen muuttuja muodossa Sarake käyttämällä huomautusta @Sarake.

Opiskelija.java

 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; } } 

Vaihe 11: Luo paketti nimellä com.javatpoint.controller kansiossa src/main/java.

Vaihe 12: Luo pakkaukseen Controller-luokka com.javatpoint.controller . Olemme luoneet ohjainluokan nimellä StudentController . StudentController-luokassa olemme tehneet seuraavaa:

  • Merkitse luokka nimellä RestController käyttämällä huomautusta @RestController.
  • Autowire Opiskelijapalvelu luokkaa käyttämällä huomautusta @Autowired .
  • Määritä seuraavat menetelmät:
      getAllStudent():Se palauttaa luettelon kaikista opiskelijoista.
  • getStudent():Se palauttaa opiskelijan tiedot, jotka olemme määrittäneet polkumuuttujassa. Olemme välittäneet id:n argumenttina käyttämällä huomautusta @PathVariable. Annotaatio osoittaa, että menetelmäparametri on sidottava URI-mallimuuttujaan.deleteStudent():Se poistaa tietyn opiskelijan, jonka olemme määrittäneet polkumuuttujassa.tallenna opiskelija():Se säästää opiskelijan yksityiskohdat. Huomautus @RequestBody osoittaa, että menetelmäparametri on sidottava verkkopyynnön runkoon.

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(); } } 

Vaihe 13: Luo paketti nimellä com.javatpoint.service kansiossa src/main/java.

Vaihe 14: Luo Palvelu luokkaa. Olemme luoneet palveluluokan nimellä Opiskelijapalvelu paketissa 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); } } 

Vaihe 15: Luo paketti nimellä com.javatpoint.repository kansiossa src/main/java.

Vaihe 16: Luo Arkisto käyttöliittymä. Olemme luoneet arkiston käyttöliittymän nimellä Student Repository paketissa com.javatpoint.repository. Se laajentaa Crud-varasto käyttöliittymä.

StudentRepository.java

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

Nyt määritämme tietolähteen URL-osoite, kuljettajaluokan nimi, käyttäjätunnus, ja Salasana, in application.properties tiedosto.

Vaihe 17: Avaa application.properties tiedosto ja määritä seuraavat ominaisuudet.

application.properties

 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 

Huomautus: Älä unohda ottaa H2-konsolia käyttöön.

Kun kaikki luokat ja paketit on luotu, projektihakemisto näyttää seuraavalta.

Spring Boot H2 -tietokanta

Nyt suoritamme sovelluksen.

Vaihe 18: Avata SpringBootH2DatabaseExampleApplication.java tiedosto ja suorita se Java-sovelluksena.

lajittelu Javassa arraylistissa

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); } } 

Seuraavassa vaiheessa käytämme lepoasiakasta Postinkantaja lähettämisestä LÄHETTÄÄ ja SAADA pyyntö . Jos Postmania ei ole asennettu järjestelmääsi, noudata seuraavia ohjeita:

Vaihe 19: Avaa Postinkantaja ja toimi seuraavasti:

  • Valitse LÄHETTÄÄ
  • Kutsu URL-osoite http://localhost:8080/student.
  • Valitse Runko
  • Valitse sisältötyyppi JSON (sovellus/json).
  • Lisää tiedot. Olemme lisänneet seuraavat tiedot runkoon:
 { 'id': '001', 'age': '23', 'name': 'Amit', 'email': '[email protected]' } 
  • Klikkaa Lähettää

Kun pyyntö on suoritettu onnistuneesti, se näyttää Tila: 200 OK . Se tarkoittaa, että tietue on onnistuneesti lisätty tietokantaan.

Samalla tavalla olemme lisänneet seuraavat tiedot.

 { '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]' } 

Siirrytään H2-konsoliin nähdäksesi tiedot.

Vaihe 20: Avaa selain ja kutsu URL-osoite http://localhost:8080/h2-console. Klikkaa Kytkeä painiketta alla olevan kuvan mukaisesti.

Spring Boot H2 -tietokanta

Napsautettuaan Kytkeä -painiketta, näemme Opiskelija taulukko tietokannassa alla olevan kuvan mukaisesti.

Spring Boot H2 -tietokanta

Vaihe 21: Klikkaa Opiskelija taulukko ja napsauta sitten Juosta -painiketta. Taulukko näyttää tiedot, jotka olemme lisänneet kehoon.

Spring Boot H2 -tietokanta

Vaihe 22: Avaa Postimies ja lähetä a SAADA pyyntö. Se palauttaa tiedot, jotka olemme lisänneet tietokantaan.

Spring Boot H2 -tietokanta

Lähetetään a SAADA pyyntö URL-osoitteella http://localhost:8080/student/{id}. Olemme käyttäneet URL-osoitetta http://localhost:8080/student/3. Se palauttaa tiedot opiskelijasta, jonka tunnus on 3.

Spring Boot H2 -tietokanta

Vastaavasti voimme myös lähettää a POISTAA pyyntö. Oletetaan, että haluamme poistaa opiskelijatietueen, jonka tunnus on 2.

Jos haluat poistaa opiskelijatietueen, lähetä a POISTAA pyyntö URL-osoitteella http://localhost:8080/student/2. Näemme, että opiskelija, jonka tunnus on 2 on poistettu tietokannasta.

Spring Boot H2 -tietokanta
Lataa H2-tietokannan esimerkkiprojekti