ORM(object relational mapping) TOOL NELERDİR VE ARTILARI NEDİR? (in java)

Selamlar,

 Öncelikle kısaca ORM: Java objeleri ile iliskisel veritabani arasindaki baglantiyi yonetimi saglayan tekniktir.  ORM TOOL kullanmanın bir çok avantajı bulunmaktadır. İlk olarak temel avantajlarından bahsetmemiz gerekir ise;

  1. Yazılan kodun veritabanı çeşidiyle bağımlılığı yoktur. (Oracle, SQL Server, MySQL vs)
  2. JPA basit , guclu ve esnek bir yapiya sahiptir.
  3. POJO modelli geliştirme,
  4. Object Oriented , inheritance desteği
  5. Transaction,
  6. Java Persistence Query Language , Query API
  7. Criteria API, Bean Validation Support

avantajlarını bize sağlamaktadır. Bize bu avantajları sağlayan bazı ORM TOOL şunlardır;

  • Apache Cayenne
  • Apache IBATIS 
  • Hibernate 
  • JDO /Java Data Objects
  • JPA (Java Persistence API) 

Örnek olması açısından JPA ORM TOOL bir spectir/dökümantasyondur. Bu dökümantasyonu ait içerisinde ürünler bulunmaktadır. Eğer bir projede JPA kullanmak istiyorsanız içerisinde bulunan herhangi bir üründen yararlanabilirsiniz. Bu ürünler EclipseLink(referans implementasyonu), OpenJPA, dataNucleus,Hibernate’dir.

Java projeniz üzerinde ORM TOOL kullanmak yerine tamamen düz bir mantıkla JDBC de kullanabilirsiniz. Bakınız JDBC Nedir ?  JDBC üzerinde DriverManager, Connection,Statement,ResultSet işlemlerinin hepsini bizim yapmamız gerekmektedir.

JDBC yazımızdan kullanım avantajlarını ve dezavantajlarını okuyabilirsiniz. Yanda görülen grafik üzerinde JDBC tercihinden çok daha fazla sektör üzerinde ORM TOOL tercih edilmektedir.

ORM TOOL kullanılırken bir başka ORM TOOL geçmek  bütün yapıda bir değişiklik gerektirmediği gibi farklı bir veri tabanı kullanmak içinde sadece persistence.xml içerisindeki ufak bir değişiklik ve eğer projeniz maven ise pom.xml içersinde gerekli dependencies ve uyumlu versiyonunu eklemek yetecektir. 

Yukarıda bahsettiğiniz ORM TOOL avantajlarından 3 numara pojo modelli geliştirme kullanılır(pojo:bir classin en yalın halidir içerisinde değişkenler ve sadece getter/setter metodları bulunur.) Oluşturulan pojo entity classlarının db tarafındada bir karşılığı oluşturulur. Örnek olması açısından calisan.java sınıfının int id, String isim,String soyisim gibi değişkenleri olduğunu varsayarsak ORM mapping işlemi yaptığından dolayı db tarafındada calisan tablosu oluşacaktır ve tablonun number id, varchar isim, varchar soyisim gibi birebir karşılığı oluşacaktır.

5 numradaki transaction kavramı içinde ORM TOOL yardımcı olmaktadır. Veri tabanı kısmına insert,update,delete işlemleri transaction.begin() , transaction.commit() arasında olmalıdır. Bu aralıkta yapılan işlemler direk olarak veri tabanına işlemektedir.

6 ve 7 numaralı Java Persistence Query Language , Query API ,Criteria API gibi farklı ihtiyaça göre hizmet edecek query çeşitleride mevcuttur. Hespine birer küçük kullanım örneği vermek gerekirse;

JPQL en temel sorgu şeklidir.SQL ile çok benzerdir.  (select e from Employee e) 

Query API(TypedQuery typedQuery =entityManager.createQuery(“select e from Employee e”,Employee.class)

Criteria API:CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(String.class);
Root empRoot = criteriaQuery.from(Employee.class);
criteriaQuery.select(empRoot.get(“name”));
TypedQuery typedQuery = entityManager.createQuery(criteriaQuery);
return typedQuery.getResultList();

Criteria API yaklaşımı SQL kullanımından kaçınmak daha fazla Java kodu yazarak işi halletmek için çıkarılmıştır.

Temel olarak ORM kullanımları bize bu gibi faydalar sağlamaktadır. Saygılarımla,

Bilgi paylaştıkça çoğalır, paylaşarak destek ol.