H2 Veritabanı Nedir

H2  , Java  dilinde yazılmış, açık kaynaklı, kompakt bir ilişkisel veritabanıdır . H2 yükleyici yaklaşık 8 MB kapasiteye sahiptir .

H2’nin ilginç özelliklerinden biri,  bilgisayarın sabit diskinde saklanmak yerine bir Bellek İçi Veri Tabanı(In Memory Database) oluşturabilmenizdir. H2 nin in memory özelliği sorgu hızını ve manipülasyon çok hızlı hale getirir. Ancak, ” Bellek İçi Veri Tabanı ” özelliğini seçerseniz , veriler yalnızca uygulama çalıştığında olur, uygulama kapatıldığında veriler de bellekten silinir.

H2 veritabanı  H2 Konsol adı verilen bir yönetim aracı sağlar ve bu h2 console üzerinden h2 veritabanı ile çalışabiliriz.

Ben bu yazımda, size H2 veritabanıyla  çalışmayı ve ” Bellek içi Veritabanı” özelliğini kullanmak için bir Spring Boot projesi oluşturmayı  ve H2 Konsolu yönetim aracını kullanacak h2 yi istediğimiz şekilde yapılandırmayı göstereceğim .

Spring Boot H2 Örneği

Spring Boot Projesi Oluşturma

Spring initializr kullanarak proje grup ismi com,artifactı spring-boot-h2-ex ve paket ismi com.h2 olan bir spring boot projesi oluşturalım.

pom.xml dosyamızda olması gereken dependecyler aşağıdaki gibidir.

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope>
</dependency>
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional>
</dependency>

Proje yapımız aşağıdaki gibi olmalıdır.

Model Katmanını Oluşturma

com.h2 paketi içerisinde model adlı bir paket oluşturalım.Bu model paketinin içerisinde Person adlı bir class oluşturalım.

@Data
@Entity
public class Person { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String name; private String surname;
}

Person modelimiz uygulamamız ayağa kalktığı anda ddl sayesinde otomatik olarak oluşturulacaktır.

Repository Katmanını Oluşturma

com.h2 paketi içerisinde repository adlı bir paket oluşturalım.Bu repository paketinin içerisinde PersonRepository adlı bir interface oluşturalım.

public interface PersonRepository extends JpaRepository<Person,Integer> {
}

Person modelimiz üzerinden temel crud işlemlerini yapabileceğimiz PersonRepository sınıfımız hazır.PersonRepository sınıfı runtime da otomatik olarak inject edilecektir.

com.h2 paketi içerisinde bootstrap adlı bir paket oluşturalım.Bu bootstrap paketinin içerisinde DataLoader adlı bir class oluşturalım.

@AllArgsConstructor
@Component
public class DataLoader implements ApplicationRunner { private PersonRepository personRepository; @Override public void run(ApplicationArguments args) throws Exception { Person person1=new Person(); person1.setName("ali"); person1.setSurname("seker"); Person person2=new Person(); person2.setName("hakan"); person2.setSurname("ergin"); Person person3=new Person(); person3.setName("yasin"); person3.setSurname("simsek"); personRepository.save(person1); personRepository.save(person2); personRepository.save(person3); }
}

Bu DataLoader clası,uygulamamız oluşturulduğunda otomatik olarak Person tablomuza ,run methodunda tanımladığımız 3 kaydı atacaktır.

Son olarak application.properties alanına şu değeri ekleyelim.

spring.h2.console.enabled=true

spring.h2.console.enabled=true ile h2 console aktif ettik.

Uygulamayı Çalıştırma

Uygulama kullanıma hazır. ./mvnw spring-boot:run komutu ile uygulamamızı çalıştıralım.

Uygulamamız başarılı bir şekilde ayağa kalktı.

http://localhost:8080/h2-console adresinden h2 console erişip person tablomuzun ve datalarımızın oluşturulup oluşturulmadığını kontrol edelim.

Database bilgisi olarak aşağıdakileri girelim.

Saved Settings:	Generic H2 (Embedded)
Driver Class: org.h2.Driver
JDBC URL:jdbc:h2:mem:testdb
User Name:sa
Password:

Connect deyip testdbye giriş yapalım.Spring boot runtimeda h2 için testdb yi otomatik olarak oluşturur.

Görüldüğü üzere person tablomuz otomatik olarak h2 databesinde oluşturulmuş.

Terminale select * from person komutunu yazalım.Run diyelim.

Görüldüğü üzere tabloya attığımız kayıtların hepsi getirildi.

H2 gömülü databasesini kullanmanın en büyük avantajı,uygulama kapandığında oluşturulan dataların otomatik olarak silinmesidir.Localinizde uygulama geliştirirken bu size büyük bir kolaylık sağlar.


Projenin Github Linki : https://github.com/susimsek/spring-boot-h2-ex

Slack Kanalımın Linki ;

https://join.slack.com/t/javadevelopercorp58/shared_invite/enQtODM3NzU5NDMzMjA1LWQ1YjFlZGE5MTI0ZDNjZDdlNGE4ZDE4NmM0NTBiODJlMTJiYmZjMjJiZTY3NzI0MTc5ZjJhZmQxN2MyMTlmYjU

Daha fazla konu içeriği ve çeşitliliği istiyorsanız slack kanalımı takip edebilirsiniz.

Responses

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir