Spring Boot Crud Projesi Oluşturma

Esengül Bayazit
Pia-Team Tech

--

Merhabalar,

Bu yazımda REST API, H2 database ve Spring Data JPA kullanarak Spring Boot’ta CRUD (Cread, read, update, delete) işlemlerini gerçekleştireceğimiz örnek bir proje oluşturacağız.

Çalışan bilgilerinin yönetildiği sistem şeklinde geliştireceğimiz bu projede yapacağımız işlemler;

1-) Sistemde yeni bir çalışan kaydı oluşturma

2-) Kayıtlı tüm çalışanları görüntüleme

3-) Belirli bir id’ye sahip çalışanı görüntüleme

4-) Belirli bir id’ye göre çalışan bilgisini güncelleme

5-) Sistemde belirli bir id’ye sahip çalışan bilgisini silme şeklinde ilerleyecektir.

Kullanacağımız Tool ve Teknolojiler

  • Spring Boot -2.6.2 version
  • JDK 8 veya üzeri
  • Spring Data JPA
  • IDE : Intellij Idea
  • H2 veritabanı
  • Postman

NOT : H2 veritabanını kullanmak için herhangi bir kurulum yapmaya gerek yoktur. H2 veritabanı runtime’da çalışan in-memory bir veritabanıdır. Yani uygulamayı başlattığımızda H2 veritabanı başlatılır ve uygulamayı durdurduğumuzda veritabanı da durur. Projemizde kullanabilmek için dependency eklememiz yeterli olacaktır. İlerleyen adımlarda nasıl kullanacağımızı daha detaylı göreceğiz.

Örnek uygulamamızda neler yapacağımızdan ve kullanacağımız teknolojilerden bahsettikten sonra artık projemizi geliştirmeye başlayabiliriz.

Spring Data JPA ve H2 Database İle Spring Boot CRUD Projesi Oluşturma

1-) İlk olarak Spring Boot projesi oluşturmamız gerekiyor. Ben projeyi oluştururken Spring Initializr kullandım. https://start.spring.io/ adresinden Spring Boot projemizi oluşturabiliriz. Add dependency’ye giderek H2 Database, Spring Data JPA ve Spring Web’i seçip eklememiz gerekiyor. Proje bilgilerini ve dependency’leri ekledikten sonra generate ederek projeyi oluşturabiliriz. Zip dosyası olarak indirilen projeyi zipten çıkarıp Intellij’de proje yolunu seçerek açabilirsiniz.

Projeyi oluşturduğumuzda klasör yapısı şu şekilde olacaktır:

2 -) Projeyi açtıktan sonra ilk olarak consoleda H2 veritabanını kullanabilmemiz için gerekli konfigürasyonları yapmalıyız. Bunun için projede application.properties dosyasına aşağıdaki özellikleri ekleyerek yapılandırmamız gerekiyor. Crud işlemlerini gerçekleştirirken yaptığımız işlemleri H2 veritabanında consoleda görebilmemiz için spring.h2.console.enabled=true şeklinde setlememiz yeterli olacaktır.

3 -) Şimdi Employee.java ismindeki entity classımızı oluşturalım. Bir entity classı olduğunu belirtmek için @Entity anotasyonunu ekliyoruz. Ayrıca veritabanında primary key olarak id kullanacağımız için @Id anotasyonunu ekliyoruz.

4 -) Controller katmanımızı oluşturalım. Controller en dış katmandır ve requestler ilk olarak controllera gelir. Controller sınıfı olduğunu belirtmek için @RestController anotasyonunu ekliyoruz. Ayrıca controllera gelen requestleri ilgili REST methodları ile eşleştirmek için @RequestMapping anotasyonunu ekliyoruz. Şimdi controller classımızda kullandığımız bu HTTP metodları kısaca inceleyelim.

POST : Post isteği ile requestte body içerisinde gönderilen veriler sunucuya iletilir ve yeni bir kaynak oluşturulur. Biz örneğimizde POST metodu ile yeni bir çalışan kaydı oluşturacağız.

GET : Sunucudan veri almak için kullandığımız yöntemdir. Get isteği yapılırken request içerisinde body kullanılmaz. Uygulamamızda tüm çalışan bilgilerini ve belirli bir id’ye sahip çalışan bilgisini almak için kullanacağız.

PUT : Sunucudaki belirli bir kaynağı güncellemek için kullanılır. Biz de belirli bir id’ye sahip çalışan bilgisini update etmek için kullanacağız.

DELETE : Sunucudaki veriyi silmek için kullanılır. Örneğimizde belirli bir id’ye göre çalışan bilgisini sunucudan silmek için kullanacağız.

5 -) Business sürecin ilerlediği Service katmanını oluşturalım. Service katmanı, Controller ve Repository arasındaki iletişimi sağlayan katman olarak düşünülebilir. Controllera gelen requestlere göre Repositorydeki database işlemlerini yapmak için gerekli olan metodları bu katmanda tanımlıyoruz.

Service katmanı olduğunu belirtmek için @Service anotasyonu ekleyelim. Database işlemlerinin gerçekleşmesi için Service katmanından Repositorye erişmemiz gerekir. Bu iki katman arasındaki etkileşim Spring Boot’ta Dependency Injection ile sağlanır. Spring Boot’da bu etkileşimi @Autowired anatosyununu kullanarak sağlıyoruz. Böylece @Autowired ile Service katmanında EmployeeRepositorynin bir instance’ını oluşturmuş ve bu instance üzerinden repositorymize erişmiş olacağız.

6 -) Şimdi EmployeeRepository.java interfaceini oluşturalım. Repository bizim tüm veritabanı işlemlerimizin gerçekleştirileceği katmandır. EmployeeRepositoryi JpaRepositoryden extend ediyoruz. Böylece Spring bootun bize sağlamış olduğu bu kolaylıkla JpaRepositoryde tanımlı database işlemlerini doğrudan kullanabiliyoruz.

Uygulamamızı tamamladığımıza göre şimdi projemizi ayağa kaldırıp Postman üzerinden testlerini yapmaya başlayabiliriz. İlk olarak SpringBootCrudExampleApplication.java classına gidip run diyerek projemizi ayağa kaldırmamız gerekiyor.

Projemizi ayağa kaldırdığımızda tarayıcımızda localhost:8090/h2-console adresine gidelim ve ilk olarak H2 veritabanının consoleda aktif olduğunu görelim.

application.properties’te yaptığımız konfigürasyonlardaki jdbc url, user name vs bilgilerini burada görebiliriz. Connect dedikten sonra H2 veritabanında oluşturduğumuz Employee isimli tablomuzu görebiliriz. Şuan henüz bir işlem yapmadığımız için tablomuzda herhangi bir kayıt yoktur.

Şimdi Postmanı açıp test etmeye başlayabiliriz. İlk olarak post metodunu test edip veritabanına yeni bir çalışan kaydı oluşturduğumuzu görelim. Http metodunu POST olarak seçip body’de gerekli alanları request içerisinde gönderdiğimizde başarıyla kayıt oluşturduğumuzu görebiliriz. Ayrıca Http isteğinden başarıyla dönen 201 Created kodunu response’da görebiliriz.

Post işlemimiz sonucu veritabanımıza baktığımızda başarıyla kayıt attığımızı görelim.

Şimdi GET işlemini test edelim. Önceden oluşturduğumuz 3 çalışan bilgilerinin hepsini görüntüleyelim.

Http metodunu GET seçtiğimizde responseda body kısmında oluşturduğumuz 3 çalışanın bilgilerini alabildik. Response’da verileri başarılı bir şekilde aldığımızı belirten 200 OK kodunu görebiliriz.

Şimdi de belirli bir id’ye göre GET işlemini test edelim. Örneğin kayıtlı verilerden id’si 1 olan kaydı çekmek istediğimizde aldığımız response’a bakalım.

Şimdi de id’si 1 olan çalışanın email bilgisini PUT metodu ile update edelim. Http metodunu PUT seçip body kısmında gerekli verileri girdikten sonra request oluşturalım. Bu çalışanın mail bilgisini başarılı bir şekilde güncellediğimizi 200 OK response mesajından ve body kısmından görebiliriz.

Veritabanını kontrol ettiğimizde mail bilgisinin başarıyla güncellendiğini görebiliriz.

Son olarak DELETE işleminin testini yapalım. Employee tablosundan id’si 1 olan kaydı silelim.

Veritabanından kontrol ettiğimizde de id’si 1 olan kaydı silmiş olduğumuzu gördük. Response’da başarıyla silme işlemi gerçekleştirdiğimizi gösteren 202 Accepted mesajımızı da görmüş olduk.

Umarım faydalı bir yazı olmuştur. Bir sonraki yazılarda görüşmek üzere:)

Projenin kaynak kodlarına github hesabımdan ulaşabilirsiniz.

--

--