logo

Spring Boot H2 duomenų bazė

Kas yra atminties duomenų bazė

Atmintyje esanti duomenų bazė priklauso nuo sistemos atminties, o ne nuo vietos diske duomenims saugoti. Kadangi prieiga prie atminties yra greitesnė nei prieiga prie disko. Mes naudojame atmintyje esančią duomenų bazę, kai nereikia saugoti duomenų. Atmintyje esanti duomenų bazė yra įterptoji duomenų bazė. Pagal numatytuosius nustatymus atmintyje esančios duomenų bazės yra nepastovios ir visi saugomi duomenys prarandami, kai iš naujo paleidžiame programą.

Plačiai naudojamos atminties duomenų bazės yra H2, HSQLDB (HyperSQL duomenų bazė) , ir „Apache“ derbis. Jis automatiškai sukuria konfigūraciją.

kas yra struktūra duomenų struktūroje

Patvarumas ir atminties duomenų bazė

Nuolatinė duomenų bazė išsaugo duomenis fizinėje atmintyje. Duomenys bus prieinami, net jei duomenų bazės serveris bus perkeltas. Kai kurios populiarios išlikimo duomenų bazės Orakulas, MySQL , Postgres , ir tt

Tuo atveju, kai atminties duomenų bazė, duomenų saugykloje sistemos atmintis . Ji prarado duomenis, kai programa buvo uždaryta. Tai naudinga dėl MAŽAI s (Sąvokų įrodymas), neskirtas gamybos programai. Plačiai naudojama atminties duomenų bazė yra H2.

Kas yra H2 duomenų bazė

H2 yra įterptasis, atvirojo kodo, ir atmintyje duomenų bazėje. Tai reliacinė duomenų bazių valdymo sistema, parašyta Java . Tai yra kliento serveris taikymas. Paprastai jis naudojamas vieneto bandymas . Jis saugo duomenis atmintyje, o ne saugo duomenis diske.

Privalumai

  • Nulinė konfigūracija
  • Juo lengva naudotis.
  • Jis yra lengvas ir greitas.
  • Tai suteikia paprastą konfigūraciją, kad būtų galima perjungti iš tikros duomenų bazės į atmintyje esančią duomenų bazę.
  • Jis palaiko standartinę SQL ir JDBC API.
  • Tai suteikia žiniatinklio konsolę, kurią reikia palaikyti duomenų bazėje.

Sukonfigūruokite H2 duomenų bazę

Jei programoje norime naudoti H2 duomenų bazę, pom.xml faile turime pridėti šią priklausomybę:

 com.h2database h2 runtime 

Pridėję priklausomybę, turime sukonfigūruoti duomenų šaltinio URL, tvarkyklės klasės pavadinimas, naudotojo vardas, ir Slaptažodis iš H2 duomenų bazės. „Spring Boot“ yra paprastas būdas konfigūruoti šias ypatybes taikymas.ypatybės failą.

 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 

Viduje spring.datasource.url nuosavybė, mem yra atmintyje esančios duomenų bazės pavadinimas ir testdb yra schemos, kurią pagal numatytuosius nustatymus teikia H2, pavadinimas. Taip pat galime apibrėžti savo schemą ir duomenų bazę. Numatytasis vartotojo vardas yra įjungta o tuščias slaptažodis žymi an tuščia Slaptažodis. Jei norime pakeisti vartotojo vardą ir slaptažodį, galime nepaisyti šių reikšmių.

Išsaugokite duomenis H2 duomenų bazėje

Jei norime išsaugoti duomenis H2 duomenų bazėje, turėtume saugoti duomenis faile. Kad pasiektume tą patį, turime pakeisti duomenų šaltinio URL nuosavybę.

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

Aukščiau nurodytame turte pavyzdiniai duomenys yra failo pavadinimas.

Sukurkite schemą ir užpildykite duomenis

Mes galime apibrėžti schemą sukurdami a SQL failą išteklių aplanką (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 ); 

Duomenis lentelėje galime užpildyti sukūrę a SQL failą išteklių aplanką (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 automatiškai paima data.sql failą ir paleiskite jį H2 duomenų bazėje paleidžiant programą.

H2 konsolė

Pagal numatytuosius nustatymus H2 duomenų bazės konsolės rodinys yra išjungtas. Prieš prisijungdami prie H2 duomenų bazės, turime ją įjungti naudodami šią ypatybę.

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

Įjungę H2 konsolę, dabar H2 pultą galime pasiekti naršyklėje, kreipdamiesi URL http://localhost:8080/h2-console. Toliau pateiktame paveikslėlyje parodytas H2 duomenų bazės konsolės vaizdas.

Spring Boot H2 duomenų bazė

Aukščiau pateiktoje ekrano kopijoje apibrėžėme savo duomenų bazę, pavadintą javatpoint .

Spring Boot H2 pavyzdys

Sukurkime „Spring Boot“ programą su H2 duomenų baze.

1 žingsnis: Atidarykite „Spring Initializr“ http://start.spring.io.

2 žingsnis: Pasirinkite Spring Boot versiją 2.3.0.M1.

2 žingsnis: Pateikite Grupė vardas. Mes pateikėme com.javatpoint.

3 veiksmas: Pateikite Artefaktas Id. Mes pateikėme spring-boot-h2-database-example.

5 veiksmas: Pridėkite priklausomybes Spring Web, Spring Data JPA, ir H2 duomenų bazė.

6 veiksmas: Spustelėkite ant Generuoti mygtuką. Kai spustelėjame mygtuką Generuoti, jis apvynioja projektą a Jar failą ir atsisiunčia jį į vietinę sistemą.

Spring Boot H2 duomenų bazė

7 veiksmas: Ištrauka Jar failą ir įklijuokite jį į STS darbo sritį.

8 veiksmas: Importuoti projekto aplanką į STS.

Failas -> Importuoti -> Esami Maven projektai -> Naršyti -> Pasirinkite aplanką spring-boot-h2-database-example -> Baigti

Importuoti reikia šiek tiek laiko.

9 veiksmas: Sukurkite paketą su pavadinimu com.javatpoint.model aplanke src/main/java.

10 veiksmas: Sukurkite modelio klasę pakete com.javatpoint.model. Sukūrėme modelio klasę pavadinimu Studentas. Knygų klasėje atlikome šiuos veiksmus:

  • Apibrėžkite keturis kintamuosius ID, amžius, vardas, ir
  • Generuokite geterius ir seterius.
    Dešiniuoju pelės mygtuku spustelėkite failą -> Šaltinis -> Generuoti Getters ir Nustatytojus.
  • Pažymėti klasę kaip Esybė naudojant anotaciją @Subjektas.
  • Pažymėti klasę kaip Lentelė pavadinimą naudodami anotaciją @Lentelė.
  • Apibrėžkite kiekvieną kintamąjį kaip Stulpelis naudojant anotaciją @Stulpelis.

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

11 veiksmas: Sukurkite paketą su pavadinimu com.javatpoint.controller aplanke src/main/java.

12 veiksmas: Sukurkite valdiklio klasę pakete com.javatpoint.controller . Sukūrėme valdiklio klasę pavadinimu StudentController . StudentController klasėje atlikome šiuos veiksmus:

  • Pažymėti klasę kaip RestController naudojant anotaciją @RestController.
  • Automatinis laidas Studentų paslauga klasė naudojant anotaciją @Autowired .
  • Apibrėžkite šiuos metodus:
      getAllStudent ():Tai grąžina visų mokinių sąrašą.
  • getStudent ():Jis grąžina mokinio informaciją, kurią nurodėme kelio kintamajame. Mes perdavėme ID kaip argumentą naudodami komentarą @PathVariable. Anotacija nurodo, kad metodo parametras turi būti susietas su URI šablono kintamuoju.ištrinti mokinį ():Tai ištrina konkretų mokinį, kurį nurodėme kelio kintamajame.išsaugoti mokinį ():Tai išsaugo mokinio detales. Anotacija @RequestBody nurodo, kad metodo parametras turi būti susietas su žiniatinklio užklausos turiniu.

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

13 veiksmas: Sukurkite paketą su pavadinimu com.javatpoint.service aplanke src/main/java.

14 veiksmas: Sukurti Aptarnavimas klasė. Sukūrėme paslaugų klasę pavadinimu Studentų paslauga pakuotėje 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); } } 

15 veiksmas: Sukurkite paketą su pavadinimu com.javatpoint.repository aplanke src/main/java.

16 veiksmas: Sukurti Saugykla sąsaja. Sukūrėme saugyklos sąsają pavadinimu StudentRepository pakuotėje com.javatpoint.repository. Jis pratęsia Crud saugykla sąsaja.

StudentRepository.java

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

Dabar sukonfigūruosime duomenų šaltinį URL, vairuotojo klasės pavadinimas, vartotojo vardas, ir Slaptažodis, viduje taikymas.ypatybės failą.

17 veiksmas: Atidaryk taikymas.ypatybės failą ir sukonfigūruokite šias ypatybes.

taikymas.ypatybės

 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 

Pastaba: nepamirškite įjungti H2 konsolės.

Sukūrus visas klases ir paketus, projekto katalogas atrodo taip.

Spring Boot H2 duomenų bazė

Dabar paleisime programą.

18 veiksmas: Atviras SpringBootH2DatabaseExampleApplication.java failą ir paleiskite jį kaip „Java“ programą.

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

Kitame žingsnyje naudosime poilsio klientą Paštininkas už siuntimą PAST ir GAUTI prašymas . Jei Postman jūsų sistemoje neįdiegtas, atlikite toliau nurodytus veiksmus.

19 veiksmas: Atidaryk Paštininkas ir atlikite šiuos veiksmus:

  • Pasirinkite PAST
  • Iškvieskite URL http://localhost:8080/student.
  • Pasirinkite kūnas
  • Pasirinkite turinio tipą JSON (programa / JSON).
  • Įdėkite duomenis. Į korpusą įtraukėme šiuos duomenis:
 { 'id': '001', 'age': '23', 'name': 'Amit', 'email': '[email protected]' } 
  • Spustelėkite ant Siųsti

Kai užklausa sėkmingai įvykdoma, rodoma Būsena: 200 Gerai . Tai reiškia, kad įrašas sėkmingai įtrauktas į duomenų bazę.

8-1 multiplekseris

Panašiai įterpėme šiuos duomenis.

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

Norėdami pamatyti duomenis, eikime į H2 pultą.

20 veiksmas: Atidarykite naršyklę ir iškvieskite URL http://localhost:8080/h2-console. Spustelėkite ant Prisijungti mygtuką, kaip parodyta žemiau.

Spring Boot H2 duomenų bazė

Paspaudę ant Prisijungti mygtuką, matome Studentas lentelę duomenų bazėje, kaip parodyta toliau.

Spring Boot H2 duomenų bazė

21 veiksmas: Spustelėkite ant Studentas lentelę, tada spustelėkite Bėk mygtuką. Lentelėje rodomi duomenys, kuriuos įdėjome į kūną.

Spring Boot H2 duomenų bazė

22 veiksmas: Atidarykite paštininką ir išsiųskite a GAUTI prašymas. Jis grąžina duomenis, kuriuos įdėjome į duomenų bazę.

Spring Boot H2 duomenų bazė

Atsiųsime a GAUTI užklausa su URL http://localhost:8080/student/{id}. Mes iškvietėme URL http://localhost:8080/student/3. Tai grąžina informaciją apie mokinį, kurio ID yra 3.

Spring Boot H2 duomenų bazė

Panašiai galime atsiųsti ir a IŠTRINTI prašymas. Tarkime, kad norime ištrinti studento įrašą, kurio ID yra 2.

Norėdami ištrinti mokinio įrašą, atsiųskite a IŠTRINTI užklausa su URL http://localhost:8080/student/2. Matome, kad studentas, kurio ID yra 2 buvo ištrintas iš duomenų bazės.

Spring Boot H2 duomenų bazė
Atsisiųskite H2 duomenų bazės pavyzdinį projektą