Spring Boot ile Database Uygulaması Geliştirmek

Spring Boot, convention over configuration yaklaşımı ile, uygulama geliştirmeyi çok kolay bir hale getirdi. Normal bir spring uygulamasında bildiğiniz gibi karmaşık xml configürasyon dosyaları ile uğraşmak gerekiyordu. Spring Boot ise, bu yaklaşımın aksine, herşeyi ile hazır bir proje yapısı sunmaktadır. Spring Boot ile yeni bir proje oluşturduğunuzda, dependency Injection, JPA ve hibernate kütüphanelerini herhangi bir xml ayarı yapmaya gerek kalmadan kullanabilirsiniz.

Spring Boot’u daha iyi anlamak için ufak bir uygulama yapacağız. IDE olarak Intellij Idea kullanacağım. Sizler de aynı proje yapısını ister start.spring.io sitesinde projeyi oluşturup, oluşan dosyayı bilgisayarınıza indirerek ya da Spring Boot cli ile elde edebilirsiniz.

Bu uygulamamızda MySql veritabanını kullanacağız.

Bir Todo tablosu oluşturup onu listeleyen ve yeni kayıtlar ekleyebileceğimiz bir uygulama olacak.

Idea’yı açıp, File New Project diyelim.

springbootnewproj

Next butonuna tıkladıktan sonra gelen ekran:

springbootprojname

Build aracı olarak Maven’i seçiyorum. İlgili alanları doldurup tekrar next butonuna basıyorum.

springbootprojprop

Bu bir web projesi olacağı için web’i işaretliyorum. Spring’in default template engine Jsp bildiğiniz gibi, fakat bu uygulama için html 5 standartlarına uyumlu olan thymeleaf template engine’ı kullanacağım.

Sql kısmında da JPA (Java Persistence Api), MySQL ve H2 seçiyorum. Aslında H2’yi seçmeme gerek yok. Fakat daha sonra test kodlarında, in memory database olarak kullanmak istediğim için ekliyorum.

Tekrar Next butonuna tıkladığımızda son olarak proje adını default olarak bırakıp, finish butonuna tıklayalım. Projemiz oluşmuş oldu böylece.

Proje yapımız aşağıdaki şekilde oluştu:

springbootprojstructure

com.onbirkod paketinin içerisine iki yeni paket ekleyelim: models ve controllers.

models paketinin altına Todo sınıfımızı ekleyelim:

Yine models paketinin altına TodoDao interface’ini ekleyelim, spring framework’un sağladığı CrudRepository interface’ını kullanıyorum. Spring Framework, yeni bir dal katmanı yazmama gerek kalmadan, veri sorgulama, kaydetme metodlarını bize hazır olarak sunuyor:

Modeli mümkün olduğunca basit tutuyorum. Id kolonu ve bir description alanından ibaret bir sınıf. Bu aşamadan sonra Controller sınıfımızı oluşturalım. controllers paketinin altına ekliyoruz:

Controller sınıfımızı oluşturduk. Son olarak da index.html dosyasını oluşturalım. Resources/templates paketinin altına ekleyelim:

Veritabanı bağlantı bilgilerimizi application.properties dosyasına girelim (Mysql url ve username/password değerlerini kendi veritabanınıza göre değiştirin):

Projemizin son haline bakalım:

springbootfinalstruct

Çalıştırıp, http://localhost:8080 adresine tarayıcımız ile bağlanalım:

springbootdemo

Sonuç

Spring Boot ile hazır gelen ayarlar sayesinde ve spring repository’sini kullanarak, web tabanlı bir veritabanı uygulamasını çok kısa bir sürede ve basitçe yapmış olduk. MySql editöründen baktığımızda tablomuzun otomatik olarak oluşturulduğunu görmüş oluruz. Gördüğünüz gibi, arka planda kullanılan hibernate kütüphanesi sayesinde herhangi bir sql cümlesi yazmamıza gerek kalmadı. Controller metodunda TodoDao tipinde bir objeye, Autowire özelliğini eklediğimiz için, dependency injection altyapısı objeyi otomatik olarak oluşturacaktır.

Güncelleme 23.10.2016

pom.xml dosyasını görmek isteyen arkadaşlar oldu:

 

 

5 düşünce - “Spring Boot ile Database Uygulaması Geliştirmek”

  1. Pingback: Vue.js (2) : Vue-resource Kullanarak Veri Çekmek - Yazılım Denemeleri

  2. “Apparently, to get version 5.1.33 of MySQL JDBC driver to work with UTC time zone, one has to specify the serverTimezone explicitly in the connection string.”

    hatasi veriyo yapılması gereken :
    application.properties sayfasındaki, spring.datasource.url degerini assagidaki gibi degiştirmek “db?” yazan yerdeki db yerine veritabani degerini yazmalisiniz

    spring.datasource.url=jdbc:mysql://localhost/db?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

Yorum Gönder

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