ORM(Object Relational Mapping)&JPA(Java Persistence API) Nedir?

Merhaba arkadaşlar, bu yazımda size kısaca ORM ve JPA ‘dan bahsedeceğim.

ORM

ORM, programlama dillerinden ve veri tabanlarından bağımsız olarak çalışan bir teknolojidir ve işlevi bizim kod bloklarımızla tablolarımız arasında bir köprü oluşturmaktır. Sanırım bu en basit tanım, ancak ne kadar basit bir tanım olsa da sağladığı kolaylıklar oldukça fazladır.

OOP ile katmanlara ayırdığımız projelerimiz ile ilişkisel veri tabanımız arasında veri alışverişini kolaylaştırır. ORM veri tabanımızdaki tablolarımızı tasarladığımız sınıflar ile yönetmemizi sağlar. ORM işlemlerin daha kısalması ve basitleşmesini sağlar.

Hiç SQL yazmadan veri tabanı kullanmanıza olanak verir. Tabi ki karmaşık sorgular yapmak istediğinizde size engel de olmuyor. ORM kullandığınızda veri tabanından bağımsız uygulamalar geliştirebilirsiniz. Sadece ayar dosyalarını değiştirmeniz yeterlidir.

JPA

JPA, ORM ‘i kullanarak oluşturulmuş kütüphanelerin Java ‘daki standardı denilebilir. JPA bir soyut sınıf gibi düşünülürse, ORM örnekleri (Hibernate, TopLink, EclipseLink gibi) bu sınıftan kalıtım alan alt sınıflar olarak düşünülebilir. Yani JPA tek başına herhangi bir işlem yapamaz. Bu yüzden JPA kullanmak istediğinizde bir kütüphaneyi kullanmanız gerekmekte. Ben en çok kullanılan bir araç olan Hibernate ‘i kullanıyorum. Bu yüzden anlatımım Hibernate üzerinden olacaktır.

JPA ‘da tablo veya entity sınıflarının(tabloların sınıf karşılığı olan sınıflar) oluşturmak için 2 yöntem bulunmaktadır. Biri java sınıflarından veri tabanı tablolarının oluşturulması, diğeri de veri tabanı tablolarından java sınıflarının oluşturulmasıdır. Tabi ki her ikisinin de kullanım koşulları farklı, bu veri tabanına ya da java sınıflarına hakim olma oranına bağlıdır.

JPA ile yapabileceklerinizden bazıları:

  • Tablo ilişkileri,
  • Veri ekleme,
  • Veri silme,
  • Veri güncelleme
  • Veri çekme(Select sorguları)

Bu komutları JPA ‘in kendisi yönetmekte, siz sadece metotları kullanıyorsunuz ve esnek bir yapısı olduğundan size de JPQL(Java Persistence Query Language) yazmanıza izin veriyor. Bu Script dili gözünüzü korkutmasın, kullanımı SQL ‘e göre oldukça kolay ve güzel. Güzel diyorum çünkü sorgularınızı sınıf, nesne ve bu nesnelerin alt alanlarını kullanarak yazıyoruz.

Bize bu kadar avantaj sağlarken hiç dezavantajı yok mu derseniz, maalesef var. İyi bir data-modeli yapmadığınız halde arka kısımda oluşturulacak olan SQL sorguları oldukça uzun ve karmaşık olabiliyor. Bu yüzden dikkatli olmakta ve iyi tasarlamakta fayda var.

EOC(End Of Code)