JPA - Giriş
Herhangi bir kurumsal uygulama, büyük miktarda veriyi depolayarak ve geri alarak veritabanı işlemlerini gerçekleştirir. Depolama yönetimi için mevcut tüm teknolojilere rağmen, uygulama geliştiricileri normalde veritabanı işlemlerini verimli bir şekilde gerçekleştirmekte zorlanırlar.
Genel olarak, Java geliştiricileri veri tabanıyla etkileşim kurmak için çok sayıda kod kullanır veya özel çerçeveyi kullanır, oysa JPA kullanıldığında veri tabanıyla etkileşim yükü önemli ölçüde azalır. Nesne modelleri (Java programı) ve ilişkisel modeller (veritabanı programı) arasında bir köprü oluşturur.
İlişkisel ve nesne modelleri arasındaki uyuşmazlıklar
İlişkisel nesneler tablo biçiminde temsil edilirken, nesne modelleri birbirine bağlı nesne biçimi grafiğinde temsil edilir. İlişkisel bir veritabanından bir nesne modelini depolarken ve alırken, aşağıdaki nedenlerden dolayı bazı uyumsuzluklar meydana gelir:
Granularity : Nesne modeli, ilişkisel modelden daha fazla ayrıntıya sahiptir.
Subtypes : Alt türler (miras anlamına gelir) tüm ilişkisel veritabanı türleri tarafından desteklenmez.
Identity : Nesne modeli gibi ilişkisel model de eşitliği yazarken kimliği ortaya çıkarmaz.
Associations : İlişkisel modeller, bir nesne etki alanı modeline bakarken çoklu ilişkileri belirleyemez.
Data navigation : Bir nesne ağındaki nesneler arasında veri dolaşımı her iki modelde de farklıdır.
JPA nedir?
Java Persistence API, büyük miktardaki verileri Oracle Corporation tarafından sağlanan bir veritabanında kalıcı olarak depolamak için bir sınıflar ve yöntemler koleksiyonudur.
JPA nerede kullanılır?
İlişkisel nesne yönetimi için kod yazma yükünü azaltmak için bir programcı, veritabanı örneğiyle kolay etkileşime izin veren 'JPA Sağlayıcı' çerçevesini izler. Burada gerekli çerçeve JPA tarafından devralınır.
JPA Geçmişi
EJB'nin önceki sürümleri, javax.ejb.EntityBean Arayüzü kullanılarak iş mantığı katmanı ile birleştirilmiş tanımlanmış kalıcılık katmanı.
EJB 3.0 sunulurken, kalıcılık katmanı ayrılmış ve JPA 1.0 (Java Persistence API) olarak belirtilmiştir. Bu API'nin spesifikasyonları, JAVA EE5 spesifikasyonları ile birlikte 11 Mayıs 2006'da JSR 220 kullanılarak yayınlandı.
JPA 2.0, Java Community Process JSR 317'nin bir parçası olarak 10 Aralık 2009'da JAVA EE6 spesifikasyonları ile piyasaya sürüldü.
JPA 2.1, 22 Nisan 2013 tarihinde JSR 338 kullanılarak JAVA EE7 spesifikasyonu ile piyasaya sürüldü.
JPA Sağlayıcıları
JPA açık kaynaklı bir API'dir, bu nedenle Oracle, Redhat, Eclipse, vb. Gibi çeşitli kurumsal satıcılar, bunlara JPA kalıcılık aromasını ekleyerek yeni ürünler sağlar. Bu ürünlerden bazıları şunları içerir:
Hibernate, Eclipselink, Toplink, Spring Data JPA, etc.