SENDE YAZ , FARKIN OLSUN...

6 Ağustos 2010 Cuma

JPA Mucizesi (Java Persistance API)




Evet , mucize diye başlık attım çünkü gerçekten mucizeler yaratıyor :) Kısaca bahsetmek istiyorum JPA'den.

Kimdir JPA,nedir,ne işe yarar , nerde kullanırız,kullandığımıza değermi?

Sırayla bu soruların tamamına cevap vermeye calısıcam ve fırsat bulursam kısa bi zaman içerisinde JPA yöntemiyle yapmıs oldugum basit bi örnek ve daha sonrada JPA le yaptıgım ve bi önceki makalemde bahsettiğim RMI yontemiyle ilişkilendirilmiş Server-Client Application bi örnek yazıcam.




O zaman sırayla baslıyalım soruları cevaplandırmaya.

Nedir bu JPA?
Java Persistence API; ilişkisel verilerin(Relational Data) , Java nesneleriyle nasıl ilişkilendirilieceğ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çıklicak olursak , Farzedelimki bi projede mysql kullandınız daha sonra aynı projeyi mssql ' e taşımak istediniz.Yapmanız gereken iş çooook tabi JPA kullanmadıysanız.Eger JPA ile tasarlanmıs bi proje ise , JPA veri tabanıyla ilişki kurarken hangi veri tabanının driver'ını gösterdiyseniz onun la ilişkiye içerisinde oluyor ve verileri cok rahat bi şekilde veri tabanına işliyo.Çünkü JPA kendine has çok basit bi querylanguage kullanıyor yani select yapıcagınız zaman,kendiniz bi query olusturuyosunuz ve JPA nın formatında bi query oluyo , daha sonra alt tarafta hangi veri tabanını koyarsanız koyun , driverını JPA'a gösterdikten sonra sorun yok, o sizin yazdıgınız queryleri arka tarafta hangi veri tabanı varsa onun anlayacağı dile çeviriyor ve işleminizi yapıyor.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ı.Şunu da belirtmeliyim ki bircok method zaten JPA de kullandıgımız Entity'mizin içinde tanımlı.Yani silmek(remove method) , eklemek(persist method) , bulmak(find method) , kendi içerisinde tanımlı.Ama query konusunda bagımsızlık olması gerektiğinden dolayı(çünkü cok specific bi query yazmak isteyebilirsiniz) size kendi query nizi olusturma imkanı veriyor ve onu alıp kullanacagı veri tabanının diline çeviriyor.Ne denebilirki.PERFECT! :)

JPA Ne işe yarar?

Ne işe yaramazki diyebiliriz aslında , çünkü bu daha çok sizin kullanım şeklinize baglı fakat örneklicek olursak yukardada yazdıgım üzere; projenizin altındaki database'i kaldırmak istediginiz de , sizi bütün kullandıgınız queryleri değiştirmek zorunda bırakmaz çünkü zaten siz projeyi JPA kullanarak yaptıysanız o zaten kendi dilini kullanmıstır ve veri tabanın değişmesi umrunda olmaz , driver'ını gösterirsiniz o bütün queryleri kendisi o veri tabanının diline çevirir.

JPA Nerelerde Kullanılır?
Valla şöyle bi düşününce aslında kullanmak çok mantıklı gözüküyor.Özellikle cok fazla sorgulama(query) içeren uygulamalarda verimli bi şekilde kullanılabilir.

JPA Kullandığımıza değermi?

Dogrusunu söylemek gerekirse , bu soruyu soran kişiler için sölüyorum , demek ki şu ana kadar herhangi bi proje'yi farklı bi veri tabanına taşımayı denemişler yada taşımışlar ama hiç üşenmemişler.Kısaca "Tabiki DEĞER..."
Fırsat buldugum en kısa zamanda örneklendiricem.Umarım ufkunuzu açmıştır ve faydalı olmustur.Sende Yaz , Farkın Olsun!!!

Hiç yorum yok:

Yorum Gönder