Primefaces ve Spring Boot ile CRUD Projesi

Merhabalar, covid-19  virüs sebebiyle evde kalmaya ve boş zamanlarımızda yeni projeler yapmaya devam ediyoruz.

Bir zamanlar popüler teknoloji ve yerli malı üretimi olan primefaces platformu ile JSF ve Spring Boot uygulaması yapacağız. Ama JSF ile ilgili ufak bir notasyonum var onu söyleyip öyle konuya gelelim:

Ben frontend yapısında JSF yi çok tavsiye etmiyorum. Nedeni de JSF nin artık eski bir teknoloji olması, artık bakış açıları değişiyor. Yeni ihtiyaçlara karşın yeni yaklaşımlar doğdu. JSF artık trafik ağı ve client lara hızlı cevap verebilir durumda değildi. Backend mimarileri de değişti. Rest backend mimarisi microservices mimarisi ile çok performanslı boyutlara geldi bizlerde bu esnada Angular, angularJS, nodeJS, react, vueJS gibi backend bağımsız çalışan frontend mimarilerine geçtik.

İlerleyen zamanlarda angular ile örnek proje yapacağız bu konuya orada daha çok değinmek istiyorum.

Şimdiiii.. Basic seviyede CRUD işlemleri yani create, read, update, delete işlemleri olan örnek olarak bir öğrenci projesi olsun istedim. Primefaces hep eski spring mvc freamwork kütüphaneleri ile java 6 – java 8 ile yazılmış. Fark olması amacılığıyla aşağıdaki teknolojileri kullandım:

Java 11 (openJDK),

Spring Boot 2.2.6,

Embedded bir veritabanı : H2 veya HSQL (dependecy de aktif olan HSQL) ,

Embedded Apache Tomcat,

Primefaces 6.1,

JSF2.2,

Lombok,

Mockito 1.10.19

gibi teknolojiler yer alırken; arcitecture olarak Layered bir yapı inşaa edildi. SOLID principle tam anlamıyla uygulandı. “Clean Code” yaklaşımı ile geliştirildi.

Proje geliştirilirken kullandığım bağlantılar

https://www.primefaces.org/docs/guide/primefaces_user_guide_6_1.pdf

https://www.primefaces.org/showcase/

https://start.spring.io/

Proje Ekran Görüntüleri

Burada teknolojileri gösteren örnek bir dashboard ekranı mevcut.

Start ile başlayacak olursak:

CRUD Operations içeriğinde:

Read,Update,Delete içeriğinde:

Göründüğü gibi listeleme, silme ve güncelleme işlemleri bu ekrandan yapılmaktadır. Telefon numarasını mask’ layan ufak bir algoritma da yazdım. Örnek olması açısından.

Create ekranı ise aşağıdaki gibidir:

Bu ekranda City değiştirildiğinde ona bağlı District alanları da değişmektedir. Yani örnek oluşturma açısından primefaces in ajax yapısını da göstermek istedim.

Proje Hakkında Genel Bilgi

Proje içerisinde validasyonlar client ve server taraflarında ayrı ayrı yapılmıştır. Email ve Phone Num. alanları için server tarafında annotation yazılmıştır.

Lombok ile getter setter metotları yazmadan temiz bir kod yazılması sağlandı.

Proje de spring boot ın en büyük nimetlerinden jpa olarak jparepository kullanılmış hibernate yapı sağlanmıştır.

Apache tomcat sunucusu run olurken; sql path’ inde oluşturduğum init.sql dosyasını ve insert.sql dosyasını okuyarak tüm veritabanı tablolarını oluşturur ve insert scriptleri çalıştırarak configure olur.

Unit testler yazılırken JUnit5 ve Mockito kütüphaneleri kullanılmış, controller service ve repository testleri ayrı ayrı yazılmıştır.

Proje yapısı aşağıdaki gibidir.

Sunucu ve veritabanı ayarlarını application.properties içerisinden değiştirebilirsiniz.

Projeyi indirmek için bağlantıya gidin.

Bir cevap yazın

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