Java Persistence API ile yazılım dünyasında CRUD olarak adlandırılan veritabanı işlemleri yapacağız. Ekleme, silme, güncelleme gibi fonksiyonlar kullanarak MySQL üzerinde çalışacağız. Sizler farklı veritabanları kullanabilirsiniz.(Oracle, MsSQL, Sql Server, MongoDB vb.)
JPA hakkında genel bilgilere bir önceki makalelerimi okuyarak ulaşabilirsiniz. Bu yazıda temel açıklamalardan çok, kodlar olacak haber vereyim dedim 🙂
CRUD : Veri depolama kullanılan 4 temel fonksiyondur. Create, Read, Update, Delete kelimelerinin baş harflerinden oluşmaktadır.
⇒ İlk olarak normal Java SE projesi oluşturup onu Maven projesine çeviriyoruz.
Maven: Kısaca, projemiz için bir standart oluşturup, geliştirme sürecimizi basitleştiren, IDE bağımlılığını ve Kütüphane bağımlılıklarını ortadan kaldırmamızı sağlayan bir araçtır.
⇒ İkinci adım ise kullanacağımız kütüphanelerin dependencies’lerini(bağımlılıkları) pom.xml dosyasına eklememiz gerekmekte. Veritabanı olarak MySQL, JPA aracı olarak EclipsLink kullanacağız. Pom.xml dosyamız şu şekilde olmalı.
Pom.xml
Bu Adımı gerçekleştirdikten sonra Maven Dependencies kısmına baktığınızda gerekli dosyaların otomatik olarak eklemiş olduğunu görüyoruz.
=> Üçüncü adımda ise verimizin kalıcılığını sağlamak adına kullanacağımız " persistence.xml " dosyamızı src klasörümüzün altında META-INF klasörünün içerisinde olacak şekilde ayarlıyoruz. Bu dosyayı veritabanı bağlantıları ve Entity sınıfıları tanımlamak için kullanıyoruz.
META-INF / persistence.xml
<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
kısmında tablomuzun nasıl oluşturulacağını belirliyorduk. Tablomuzun nasıl oluşturulacağını belirlemek için aşağıda bulunan 5 seçenekten birini seçmeliyiz.
Bunlar;
- drop-and-create-tables -> Uygulama başlatıldığında tabloları siler ve yeniden oluştur.
- create-or-extends-tables -> Uygulama başlatıldığında tabloları oluştur. Eğer tablolar var ise günceller.
- drop-tables -> Tabloları siler.
- create-tables -> Tabloları oluştur.
- none -> Default olarak none çalışır.
Unutmayalım : MySQL Workbench aracılığı ile persistence.xml de verilen localhost:3306/jpa adresi için bir schema oluşturmalıyız.
=> Dördüncü adıma geldiğimizde geriye yazılımımızı yazmamız kaldı. Ben bu projede basit olarak bir Öğrenci modelledim.
Bu öğrenciyi veritabanına ekleme, silme, güncelleme işlemleri yapıp, veritabanımızda bulunan tüm öğrencileri listeleyip bize geri dönderen bir program yazacağım.
Projemiz yapısı olarak 3 adet paketten/katmandan oluşacak. Bunlar;
- DAO -> Veritabanı işlemlerini(ekleme, silme, güncelleme vs.) yapacağımız katman.
- MODEL -> Veritabanına ekleyeceğimiz Entitylerimizin olduğu katman.
- TEST -> Yazılımımızı test etmek için oluşturduğumuz katman.
İlk olarak oluşturduğumuz yapıda MODEL katmanındaki sınıfı inceleyelim. Bizim bir entity'e ihtiyacımız var ve bunun için Student.java dosyasını oluşturup Öğrencimizi modelliyoruz.
Student.java
Oluşturduğumuz yapıda DAO katmanındaki sınıfları ve kodları inceleyelim.
StudentDAO adında bir interface sınıfı oluşturup ekleme, silme, güncelleme, listeleme gibi metodların sadece isimlerini verip, StudentDAOImp sınıfında ise bu metodların içini dolduruyoruz. Bu yapı bize sonradan proje içerisinde kolay güncellemelere, yeni özelliklerin kolay entegre edilmesine olanak sağlıyor.
StudentDAO.java
StudentDAOImp.java
Son olarak kodlarımızı test edeceğimiz sınıfımıza gelelim.
Test.java
Java Persistence API'nin Mimarisi
EntityManagerFactory : Persistence tarafından oluşturulur ve birden fazla EntityManager yaratıp, yönetebilir. Persistence Unit ile yapılandırılır.
EntityManager: Nesneler üzerinde kalıcılık sağlamak adına kullanılır. Sorgular için bir fabrika gibi çalışır. (ekleme, silme, güncelleme gibi işlemleri yapmamızı sağlayan metodları içerir.)
Projeye Github üzerinden ulaşabilir, kodları inceleyebilirsiniz.