logo

Spring Boot H2 Veritabanı

Bellek içi veritabanı nedir

Bellek içi veritabanı, verilerin depolanması için disk alanının aksine sistem belleğine dayanır. Çünkü belleğe erişim disk erişiminden daha hızlıdır. Verileri kalıcı hale getirmemiz gerekmediğinde bellek içi veritabanını kullanırız. Bellek içi veritabanı gömülü bir veritabanıdır. Bellek içi veritabanları varsayılan olarak geçicidir ve uygulamayı yeniden başlattığımızda depolanan tüm veriler kaybolur.

Yaygın olarak kullanılan bellek içi veritabanları şunlardır: H2, HSQLDB (HyperSQL Veritabanı) , Ve Apaçi Derbisi. Yapılandırmayı otomatik olarak oluşturur.

Kalıcılık ve Bellek İçi Veritabanı Karşılaştırması

Kalıcı veritabanı, verileri fiziksel bellekte tutar. Veritabanı sunucusu geri dönse bile veriler mevcut olacaktır. Bazı popüler kalıcılık veritabanları şunlardır: Oracle, MySQL , Postgres , vesaire.

durumunda bellek içi veritabanı, veri deposundaki Sistem belleği . Program kapatıldığında verileri kaybetti. Bunun için faydalıdır BİRAZ s (Kavram Kanıtı), üretim uygulaması için değil. Yaygın olarak kullanılan bellek içi veritabanı H2.

H2 Veritabanı Nedir?

H2 bir gömülü, açık kaynak, Ve bellekte veri tabanı. ile yazılmış ilişkisel bir veritabanı yönetim sistemidir. Java . Bu bir müşteri sunucusu başvuru. Genellikle kullanılır birim testi . Verileri bellekte saklar, verileri diskte saklamaz.

Avantajları

  • Sıfır Yapılandırma
  • Kullanımı kolaydır.
  • Hafif ve hızlıdır.
  • Gerçek bir veritabanı ile bellek içi veritabanı arasında geçiş yapmak için basit Yapılandırma sağlar.
  • Standart SQL ve JDBC API'yi destekler.
  • Veritabanında saklanacak bir web konsolu sağlar.

H2 Veritabanını Yapılandırma

H2 veritabanını bir uygulamada kullanmak istiyorsak pom.xml dosyasına aşağıdaki bağımlılığı eklememiz gerekir:

lateks kısmi türevi
 com.h2database h2 runtime 

Bağımlılığı ekledikten sonra yapılandırmamız gerekiyor veri kaynağı URL'si, sürücü sınıfı adı, kullanıcı adı, Ve şifre H2 veritabanı. Spring Boot, bu özellikleri yapılandırmanın kolay bir yolunu sağlar. uygulama.özellikler dosya.

 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 

İçinde spring.datasource.url mülk, hatıra bellek içi veritabanının adıdır ve testdb H2'nin varsayılan olarak sağladığı şemanın adıdır. Ayrıca kendi şemamızı ve veritabanımızı da tanımlayabiliriz. Varsayılan kullanıcı adı Açık ve boş şifre bir şeyi ifade eder boş şifre. Kullanıcı adı ve şifreyi değiştirmek istiyorsak bu değerleri geçersiz kılabiliriz.

Verileri H2 Veritabanında kalıcı hale getirin

H2 veritabanındaki verileri kalıcı kılmak istiyorsak verileri bir dosyada saklamalıyız. Aynısını başarmak için veri kaynağı URL özelliğini değiştirmemiz gerekiyor.

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

Yukarıdaki mülkte, örnek veri bir dosya adıdır.

Şema Oluşturun ve Verileri Doldurun

Bir şema oluşturarak tanımlayabiliriz. SQL dosyadaki kaynak klasör (src/main/resource).

şema.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 ); 

Bir tablo oluşturarak verileri doldurabiliriz. SQL dosyadaki kaynak klasör (src/main/resource).

veri.sql

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

Spring Boot otomatik olarak alır veri.sql Dosyayı oluşturun ve uygulama başlatma sırasında H2 veritabanında çalıştırın.

H2 Konsolu

Varsayılan olarak H2 veritabanının konsol görünümü devre dışıdır. H2 veritabanına erişmeden önce aşağıdaki özelliği kullanarak onu etkinleştirmeliyiz.

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

H2 konsolunu etkinleştirdikten sonra artık http://localhost:8080/h2-console URL'sini çağırarak tarayıcıda H2 konsoluna erişebiliriz. Aşağıdaki şekil H2 veritabanının konsol görünümünü göstermektedir.

Spring Boot H2 Veritabanı

Yukarıdaki ekran görüntüsünde kendi veritabanımızı tanımladık. javatpoint .

Spring Boot H2 Örneği

H2 veritabanı ile Spring Boot uygulaması kuralım.

Aşama 1: Spring Başlatıcı http://start.spring.io'yu açın.

javascript çok satırlı dize

Adım 2: Spring Boot sürümünü seçin 2.3.0.M1.

Adım 2: Sağlamak Grup isim. Sağladık com.javatpoint.

Aşama 3: Sağlamak eser İD. Sağladık spring-boot-h2-veritabanı örneği.

Adım 5: Bağımlılıkları ekleyin Bahar Webi, Bahar Verileri JPA, Ve H2 Veritabanı.

Adım 6: Tıkla Oluştur düğme. Generate butonuna tıkladığımızda proje bir Kavanoz dosyayı yerel sisteme indirir.

Spring Boot H2 Veritabanı

Adım 7: Çıkarmak Jar dosyasını açın ve STS çalışma alanına yapıştırın.

Adım 8: İçe aktarmak proje klasörünü STS'ye aktarın.

Dosya -> İçe Aktar -> Mevcut Maven Projeleri -> Gözat -> Spring-boot-h2-database-example klasörünü seçin -> Son

İthalat biraz zaman alıyor.

Adım 9: Adıyla bir paket oluşturun com.javatpoint.model klasörde src/ana/java.

Adım 10: Pakette bir model sınıfı oluşturun com.javatpoint.model. isimli model sınıfını oluşturduk. Öğrenci. Kitaplar dersinde şunları yaptık:

  • Dört değişken tanımlayın kimlik, yaş, isim, Ve
  • Alıcılar ve Ayarlayıcılar oluşturun.
    Dosyaya sağ tıklayın -> Kaynak -> Alıcılar ve Ayarlayıcılar Oluştur.
  • Sınıfı şu şekilde işaretle: Varlık ek açıklamayı kullanarak @Varlık.
  • Sınıfı şu şekilde işaretle: Masa ek açıklamayı kullanarak ad @Masa.
  • Her değişkeni şu şekilde tanımlayın: Kolon ek açıklamayı kullanarak @Kolon.

Öğrenci.java

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

Adım 11: Adıyla bir paket oluşturun com.javatpoint.controller klasörde src/ana/java.

Adım 1/2: Pakette bir Controller sınıfı oluşturun com.javatpoint.controller . ismiyle Controller sınıfını oluşturduk. ÖğrenciKontrolcüsü . ÖğrenciController sınıfında aşağıdakileri yaptık:

  • Sınıfı şu şekilde işaretle: Dinlenme Kontrolörü ek açıklamayı kullanarak @RestController.
  • Otomatik kablolama Öğrenci Hizmeti ek açıklamayı kullanarak sınıf @Otomatik kablolu .
  • Aşağıdaki yöntemleri tanımlayın:
      getAllStudent():Tüm Öğrencilerin Listesini döndürür.
  • getStudent():Yol değişkeninde belirttiğimiz öğrenci detayını döndürür. @PathVariable ek açıklamasını kullanarak kimliği argüman olarak ilettik. Ek açıklama, bir yöntem parametresinin bir URI şablon değişkenine bağlanması gerektiğini belirtir.deleteStudent():Yol değişkeninde belirttiğimiz belirli bir öğrenciyi siler.saveStudent():Öğrenci detayını kaydeder. @RequestBody ek açıklaması, bir yöntem parametresinin web isteğinin gövdesine bağlanması gerektiğini belirtir.

ÖğrenciController.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(); } } 

Adım 13: Adıyla bir paket oluşturun com.javatpoint.service klasörde src/ana/java.

Adım 14: Oluşturmak Hizmet sınıf. adında bir hizmet sınıfı oluşturduk. Öğrenci Hizmeti paketin içinde com.javatpoint.service.

ÖğrenciServisi.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); } } 

Adım 15: Adıyla bir paket oluşturun com.javatpoint.repository klasörde src/ana/java.

Adım 16: Oluşturmak Depo arayüz. adında bir depo arayüzü oluşturduk. Öğrenci Deposu paketin içinde com.javatpoint.repository. Uzatır Crud Deposu arayüz.

Öğrenci Deposu.java

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

Şimdi veri kaynağını yapılandıracağız URL, sürücü sınıfı adı, kullanıcı adı, Ve şifre, içinde uygulama.özellikler dosya.

c programları

Adım 17:uygulama.özellikler Dosyayı açın ve aşağıdaki özellikleri yapılandırın.

uygulama.özellikler

 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 

Not: H2 konsolunu etkinleştirmeyi unutmayın.

Tüm sınıfları ve paketleri oluşturduktan sonra proje dizini aşağıdaki gibi görünecektir.

Spring Boot H2 Veritabanı

Şimdi uygulamayı çalıştıracağız.

Adım 18: Açık SpringBootH2DatabaseExampleApplication.java dosyasını oluşturun ve Java Uygulaması olarak çalıştırın.

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

Bir sonraki adımda dinlenme istemcisini kullanacağız Postacı göndermek için POSTALAMAK Ve ELDE ETMEK rica etmek . Eğer Postacı sisteminizde yüklü değilse aşağıdaki adımları izleyin:

Adım 19:Postacı ve aşağıdakileri yapın:

  • Şunu seçin: POSTALAMAK
  • http://localhost:8080/student URL'sini çağırın.
  • Şunu seçin: Vücut
  • İçerik Türünü seçin JSON (uygulama/json).
  • Verileri ekleyin. Aşağıdaki verileri gövdeye ekledik:
 { 'id': '001', 'age': '23', 'name': 'Amit', 'email': '[email protected]' } 
  • Tıkla Göndermek

İstek başarıyla yürütüldüğünde, aşağıdakileri gösterir: Durum:200 Tamam . Bu, kaydın veritabanına başarıyla eklendiği anlamına gelir.

Benzer şekilde aşağıdaki verileri de ekledik.

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

Verileri görmek için H2 konsoluna erişelim.

Adım 20: Tarayıcıyı açın ve http://localhost:8080/h2-console URL'sini çağırın. Tıkla Bağlamak aşağıda gösterildiği gibi düğmesine basın.

java dizesine karakter
Spring Boot H2 Veritabanı

Üzerine tıkladıktan sonra Bağlamak düğmesini görüyoruz Öğrenci Veritabanındaki tablo aşağıda gösterildiği gibi.

Spring Boot H2 Veritabanı

Adım 21: Tıkla Öğrenci tabloya tıklayın ve ardından Koşmak düğme. Tablo gövdeye eklediğimiz verileri gösterir.

Spring Boot H2 Veritabanı

Adım 22: Postacıyı açın ve bir mesaj gönderin. ELDE ETMEK rica etmek. Veritabanına eklediğimiz verileri döndürür.

Spring Boot H2 Veritabanı

Hadi bir tane gönderelim ELDE ETMEK http://localhost:8080/student/{id} URL'si ile istekte bulunun. http://localhost:8080/student/3 URL'sini çağırdık. ID'si 3 olan öğrencinin detayını döndürür.

Spring Boot H2 Veritabanı

Benzer şekilde biz de gönderebiliriz. SİLMEK rica etmek. ID’si 2 olan bir öğrenci kaydını silmek istediğimizi varsayalım.

Öğrenci kaydını silmek için SİLMEK http://localhost:8080/student/2 URL'si ile istek yapın. Kimliği olan öğrencinin 2 veritabanından silinmiştir.

Spring Boot H2 Veritabanı
H2 Veritabanı Örnek Projesini İndirin