Java dünyası ,doğası gereği herhangi bir konu üzerinde birçok farklı çalışma yapılır ve benzer işleri yapan birçok ürün, geliştiriciler tarafından ortaya çıkartılır. Sanki ortalıkta bir karmaşa varmış gibi görünsede pek de öyle değildir.
Bu karmaşık ortamda en güçlü bileşenler ön plana çıkar, zayıf olanlar elenir ve arkasından ortaya bir spesifikasyon konularak, karmaşa tamamen ortadan kaldırılır.Kaos teorisini andıran bu süreç sonunda gerçekten çok güçlü yapılar ortaya çıkar. Mevcut konu tek çatı altında ve belirli standartlar çerçevesinde toplanmış olur.
Söylediklerimize paralel olarakta Java’da Persistence teknolojisi üzerine bir çok kütüphane geliştirilmiştir ; Hibernate(Daha önce bu teknolojiyi duymadıysanız bu yazıyı okumanızı şiddetle tavsiye ederim), Eclipse-Link, TopLink, iBatis gibi.Ve bu süreç sonunda Sun, eski tecrübeleri ile Toplink ve Hibernate gibi başarılı araçların birikimlerini bir araya getirerek JPA (Java Persistence API) isimli yeni bileşeni yayınladı.
JPA yolculuğumuza başlamadan şunu belirtmeliyimki JPA bir Hibernate veya Eclipse-Link gibi bir kütüphane değil, bunların kullanılmasını sağlayan bir spesifikasyondur. Yani biz JPA sayesinde Hibernate kütüphanesini veya diğer kütüphaneleri bilmek zorunda değiliz.
Java Persistence API; ilişkisel verilerin(Relational Data) , Java nesneleriyle nasıl ilişkilendirileceği, bu nesnelerin ilişkisel veri tabanında(Relational DataBase) daha sonra erişilmeye elverişli şekilde nasıl tutulacağı ve kullanan uygulama sona erdikten sonra da varlığın devamlılığının nasıl sağlanacağı ile ilgilenir.Varlık kalıcılık modelinin(Entity Persistance Model) basitleştirilmesi yanında Java Persistence API,nesne ilişkisel eşlemeyi standartlaştırır. Daha genel bilgilerle açıklıyacak olursak ,şimdi şu ana kadar yaptığınız veritabanı uygulamalarını hatırlayınız; bağlantıyı kurarız ve sorgu cümlelerini yazarız.Ama JPA(Java Persistence API) ile veritabanındaki basit sorgu cümleleri ile uğraşmamıza gerek kalmıyor. Bu SQL cümlelerini JPA teknolojisi sizlere kendisi oluşturur.Yalnızca bu değil tabiki JPA teknolojisi ile, veritabanı ile bilgi alışverişi esnasında veri güvenliği ve performans da üst düzeye çıkarılmış olur. Java programı ile veritabanı arasında, olabilecek en iyi düzeyde bir ara birim oluşturulmuş olur.
Şimdi gelin JPA teknolojisi içinde neleri barındırıyor, bir göz atalım.
Persistence Unit ve Entity Classes:Persistence unit`i projemize eklediğimizde veritabanımızla aynı isme sahip bir java sınıfı(Entity Class) oluştururuz.Bu sınıf veritabanına ve kullanılacak tabloya ait bilgileri içermektedir. Bu entity class sayesinde tablomuzdaki tüm verilelere ulaşabiliriz. Ve buda bizim doğrudan veritabanı ile iletişim halinde olma zorunluluğumuzu ortadan kaldırır. Persistance unit`in oluşturduğu bu sınıf sayesinde veri tabanı ile ilgili tüm işlemleri gerçekleştirebiliriz.
Sonuç olarak persitence veri tabanı ile program arasında kurmak istediğimiz köprünün temelidir.
JPA Controller Classes:Bu class ise Entity class’ ını kullanarak girişte bahsettiğim basit veritabanı işlemlerini icra eden methodları bünyesinde barındırır. Bu sayede herhangi bir SQL cümlesi yazmadan ekleme, güncelleme, veri çekme ve silme işlemleri yapılabilir.
Son olarakta sakın demeyinki bide JPA query yazmayımı öğrenicez diye ,neredeyse bildigimiz query tamamen aynı sadece falzadan “:” karakteri falan var.Güya ayrı bi query language olusturduk hesabı.
JPA teknolojisine başlangıç adına yayınladığımız bu yazı ile bir giriş yapmış bulunmaktayız,umarım ufkunuzu açmıştır ve faydalı olmuştur.