Java Persistence API (JPA) -1

Sümeyye Görgülü —  27 Aralık 2014 — Yorum bırakın

Her kurumsal uygulama, büyük miktarda veriyi saklayan  ve onları kullanan  veritabanı işlemlerini gerçekleştirir. Tüm mevcut depolama yönetimi (storage management) teknolojilerine rağmen  uygulama geliştiricileri verimli veritabanı işlemleri için çok fazla uğraşırlar.Java geliştiricilerinin genellikle veritabanı işlemlerini gerçekleştirmek için çok fazla kod yazması gerekir ve ya veritabanıyla ilişkili özel çatı(framework) kullanırlar.Oysa JPA ile veritabanı ile etkileşim yükü önemli ölçüde azaltılır. JPA, ilişkisel model (veritabanı modeli) ile nesne modeli(Java nesnesi) arasında bir köprü oluşturur.

JPA,Oracle tarafından desteklenen,bir veritabanındaki büyük ölçüde veriyi kalıcı olarak depolayan sınıflar ve metotların bir koleksiyonudur. İlişkisel nesne yönetimi(veritabanı) için kod yazım yükünü azaltır. Bunu JPA Provider çatısı sağlar. Peki neden veritabanı ile nesne arasındaki çevirimler bu kadar uğraştırıcıdır? Öncelikli olarak veritabanında ki veriler tablo formatında tutulurken, nesneler birbirlerine bağlanmış grafik formatında gösterilir.  Aşağıdaki nedenlerden dolayı bu iki tür arasında uyumsuzluklar oluşmaktadır.

  • Granularity (Parçacıklı): Nesne modeli, ilişkisel modele göre daha parçacıklı bir yapıya sahiptir.
  • Subtypes (Miras Yapısı): İlişkisel veritabanlarının tüm tipleri bunu desteklemez.

jpa

 

Yukarıdaki şekilde 3 katman bulunmaktadır. Presentation katmanı arayüz katmanıdır, kullanıcıya sunulanacak görsel yapılar bu katmanda bulunur. Business Logic katmanı ise Java sınıflarını, Entity’leri içinde barındırır. (Entity veritabanında bulunan tabloların, nesne sınıflarına karşılık gelir) JPA katmanı ise JPA Provider’a karşılık gelir. JPA Provider veritabanıyla etkileşimde olan, veritabanı modeliyle nesne modeli arasındaki dönüşümü sağlar. Bazı JPA Provider’lar: Hibernate, Eclipselink, Toplink, Spring Data JPA vs.

JPA – Architecture

JPA iş varlıklarını(business entities) ilişkisel varlık(relational entities) gibi depolayan bir kaynaktır. POJO sınıflarını varlık olarak tanımlamayı, ve bu varlıkların nasıl yönetileceğini gösterir. Aşağıdaki resim JPA’nın sınıf düzeyindeki mimarisini göstermektedir. JPA’nın çekirdek sınıf ve arayüzlerini (interface) göstermektedir.

jpa-concept

 

EntityManagerFactory:EntityManager’ın fabrika sınıfıdır. Birden fazla EntityManager örneğini yaratır ve yönetir.

EntityManager:Nesneler üzerindeki kalıcılık (persistence) işlemlerini yöneten arayüzdür. Sorgular için bir fabrika gibi çalışır. Select,insert,update,delete gibi metotları bulunur.

Entity:Veritabanında bir kayıt gibi saklanan kalıcı nesnelerdir. Tipik olarak bir entity;ilişkisel veritabanındaki bir tabloyu gösterir. Her bir entity nesnesi ise tablodaki bir satıra karşılık gelir.

EntityTransaction: EntityManager ile bire-bir ilişkiye sahiptir. Her EntityManager için işlemler EntityTransaction sınıfı tarafından gerçekleştirilir.

Persistence:  EntityManagerFactory  arayüzünü elde etmek için statik metotları içeren sınıf.

Query:Kriterlere uygun ilişkisel nesneyi elde etmek için uygulanan arayüz.

Yukarıdaki sınıflar ve arayüzler ,veritabanına entityleri bir kayıt gibi kaydetmek(depolamak) için kullanılıyor.

Sümeyye Görgülü

Posts Twitter

Çanakkale On Sekiz Mart Üniversitesi Bilgisayar Mühendisliği bölümünden mezun oldu. Yazmayı,paylaşmayı seviyor.

No Comments

Be the first to start the conversation.

Yorum yapmak için