ORM Nedir?

ORM, Object Relational Mapping anlamına gelmektedir. O/R Mapping olarakta yazılabilir. ORM nedir diye bir soru soracak olursak şöyle bir cevap verebiliriz: “İlişkisel veritabanı (RDBMS) ile nesneye yönelik programlanın (OO) arasında bir tür köprü özelliği gören ve ilişkisel veritabanındaki bilgilerimizi yönetmek için, nesne modellerimizi kullandığımız bir tekniktir/metodtur”. Basite indirgemek istersek: “Nesnelerimizi ilişkisel veritabanındaki tablomuza bağlayan ve veri alış-verişini bizim için yapan bir tekniktir/metodtur”. ORM tekniği belli bir programlama diline bağlı değildir ve her OO dilinde yazılabilir/kullanılabilir.
Günümüzde kullanılan popüler programlama dillerinde yazılmış bir çok ORM kütüphaneleri vardır. Bunlara çoğu zaman ORM araçları (ORM Tools) deniyor. Yazımın ilerleyen bölümlerinde Java dünyasında kullanılan popüler ORM araçlarına bir göz atacağız.

Popüler ORM aracları hangileridir?

Sektörde kullanılan en popüler Java ORM araçlarından bazılarını şöyle sıralayabiliriz:
Hibernate
2001 yılında Gavin King tarafından yazıldı ve şu an yazılım yönetimi JBoss şirketi tarafından yapılmaktadır. [2] Tamamen açık kaynak kodludur ve Java sektöründe en çok kullanılan ORM aracıdır. LPGL v2.1 lisansını kullanmaktadır. HQL adında (Hibernate Query Language) kendine has bir nesnesel veri çekme diline sahiptir. Criteria API içerisindeki sınıfları sayesinde bir çok işlemi SQL yazmadan yapmamıza olanak sağlamaktadır. Sınıfları, ilişkisel veritabanındaki tablolara bağlamak için hem XML hem de Anotasyon kullanır. Tüm veritabanları ile sorunsuz çalışmaktadır. JSR 220 (Enterprise Java Beans 3.0) [3] ve JSR 317 (Java Persistence 2.0) [4] spesifikasyonlarıyla tam uyumludur. Bunların yanında polymorphism, caching, otomatik transaksiyon yönetimi, lazy load etme gibi önemli özellikleri vardır.
Apache OpenJPA
JSR 220 (Enterprise Java Beans 3.0) spesifikasyonunun bir implementasyonlarından biridir. [1] Yazılımı Apache Software Foundation şirketi tarafından devam ettirilmektedir ve Apache 2.0 lisansıyla birlikte açık kaynak kodludur. JSR 220 spesifikasyonun sunduğu tüm özelliklere sahiptir. Tüm Apache serverleri ile tam uyum göstermektedir. Hibernate kadar popüler olmasada bir çok kesim tarafından kullanılmaktadır. Websphere şirketinin tercih ettiği ve kullandığı bir yazılımdır.
Toplink
Oracle şirketinin liderliğinde devam eden bir ORM aracıdır. [5] Sektörün en ileri derecede olan ORM araçlarının başında gelmektedir. Ne yazıkki açık kaynak kodlu değildir. Deneme amaçlı download edilebilir. Bu ORM aracının en dikkat çeken özelliklerinden biri hem veritabanıyla hem de XML kaynaklarıyla çalışabilmesidir. Bunun yanında tüm veritabanları ve application serverlerle uyumlu çalışabilmektedir.
Toplink ürünü altında Toplink Essentials adında bir ORM aracı vardır ve JSR 220 (Enterprise Java Beans 3.0) spesifikasyonu ile tam uyumludur. Bu araç tamamen açık kaynak kodludur. Fakat Toplink Essentials, Toplink içerisindeki tüm özelliklere sahip değildir.
EclipseLink
Eclipse Foundation şirketine bağlı olan bir ORM aracıdır ve açık kaynak kodludur. [7] Eclipse Public License ve Eclipse Distribution License lisanslarını kullanmaktadır. Oracle Toplink ürününün ortaya çıkması Oracle şirketinin Toplink ürününün 11g versiyonunu bu projeye bağışlamasıyla başlamıştır. Aslında EclipseLink bir ORM aracından çok daha geniştir. JPA, JAXB, JCA, SDO ve OSGI standartlarını desteklemektedir. EclipseLink kullanarak veritabanlarınının yanında web servisleri, object XML baglantıları ve kurumsal bilgi servisleriyle (EIS) bilgi alışverişi yapılabilir.
Apache Cayenne
Apache Software Foundation şirketinin çıkardığı bir ORM aracıdır. [8] Apache License 2.0 lisansını kullanmaktadır. ORM aracından beklenen tüm özelliklere sahiptir ve sektörde iyi bir yere gelmek için emin adımlarla devam etmektedir.
IBatis
Açık kaynak kodludur ve Apache License 2.0 lisansına sahiptir. [6] (IBatis tam olarak bir ORM aracı sayılmasa da belirtmek istedim.) IBatis bir nesne-veri aktarma aracıdır. Kullanımı çok basittir. Genellikle hazır olan bir veritabanından birebir bilgi çekmek ve bu bilgileri otomatik olarak nesnelere yazdırmak için kullanılır. Veritabanındaki tablolara bağlantı için yazılan SQL leri XML dosyaları içinde barındırıyor.
Spring Jdbc Template
Spring kütüphanesinin bir parçası olmakla beraber aynen IBatis gibi ORM aracı olmayıp veri alış-verişinde çok büyük kolaylıklar sağlamaktadır. Tamamen açık kaynak kodludur. [9]

ORM araci kullaniminda onemli tavsiyeler

Lazy loading özelliğini iyi bir şekilde kullanın. Örnek olarak, her zaman çekilmesi gerekmeyen verileri lazy olarak çekin.
Caching mekanızmasını iyi anlayın ve gereksinimlere gore değiştirin.
Çok karmaşık ORM sınıf modelleri yapmaktan kaçının.
Şunu kabul etmek gerekir ki, ORM araçları her soruna çözüm sağlamıyor. Bu nedenle bazen normal SQL kullanmak ta olağan birşeydir.
Veritabanınızdaki tablo şemanızı en iyi şekilde tasarlayın ki, nesne modeliniz ona göre uygun ve performanslı çalışsın. Kötü tasarlanmış bir veritabanı şeması, hangi ORM aracı seçilirse seçilsin efektif şekilde çalışmaz. Tavsiyem veritabanınızı iyi bir DBA (DataBase Administrator) tarafından kontrol ettirmeniz.
Verileri çekerken mümkün olduğu sürece pagination (sayfalandırma) kullanmaya çalışın. Böylelikle tüm bilgileri bir anda almanıza gerek kalmamış olacak.
Transaksiyon, concurrency batch processing ve locking mekanızmalarını, yazılımınıza en uygun şekilde configure edin.
ORM aracı kullanırken iki tür yöntemle başlıyabilirsiniz. İlki önce veritabanı hazırlanıp ardından java sınıfları hazırlanır/üretirilir. İkincisi de önce java sınıfları hazırlanıp, ardından veritabanı tasarlanır/üretilir. Ben şahsen önce veritabanı hazırlayıp, sonra java kodlarını yazıyorum/üretiyorum. Veritabanı çok önemli olduğu için, kontrolün bende olmasını istiyorum. Java sınıflarını yazarken de, bazen otomatik kod üreten program kullanıyorum, bazen de tüm sınıfları kendim yazıyorum. Tavsiyem, polymorphism veya karmaşık modeller kullanmak istiyorsanız sınıfları kendiniz hazırlanamanızdır.

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s


%d blogcu bunu beğendi: