Java-Veritabanı İlişkisi | JDBC, ORM, JPA ve Hibernate Kavramları

Osman Doğan
3 min readJan 3, 2023

Java, veritabanı sistemleriyle ilişkilendirilerek kullanılabilen bir programlama dilidir. Bugün bu ilişkiyi daha ileri bir seviyeye taşımak, daha akıcı ve kolay hale getirmek adına geliştirilmiş birden fazla sayıda API ve Framework mevcuttur. Bunların yardımı ile Java, veritabanı sistemlerine bağlanarak, verileri sorgulama, ekleme, güncelleme ve silme gibi pek çok işlemi gerçekleştirebilir.

Java ve veritabanı arasında kurulan ilişkiler yukarıda saydığımız CRUD operasyonlarından ibaret değildir. ORM (Object Relational Mapping) gibi çözümler sayesinde nesne yönelimli bir programlama dili olan Java tarafında oluşturulan objeler, direkt olarak veritabanı ile ilişkili hale getirilebilmekte ve tablolarla eşleştirilebilmektedir.

Bu yazıda, Java ile veritabanı arasındaki bu ilişkileri gerçekleştiren, düzenleyen ve daha gelişmiş bir hale getiren uygulamalar hakkında kısa ve öz bilgiler sunmaya çalışacağız. İşte Bu konuda bilmeniz gereken bazı kavramlar.

JDBC

Java ile veritabanı sistemleri arasındaki iletişim JDBC (Java Database Connectivity) isimli bir API (Application Programming Interface) aracılığıyla gerçekleştirilir. JDBC, veritabanı sistemlerine bağlanarak SQL (Structured Query Language) sorguları gönderir. Böylelikle veritabanı üzerinde çeşitli işlemlerinin gerçekleştirilmesini ve aynı zamanda gönderilen sorgulardan elde edilen verilerin Java’ya getirilmesini sağlar. JDBC ile ilgili bazı bilgileri maddeler halinde şu şeklide sıralamak mümkündür;

  • JDBC, veritabanına bağlanma, veri çekme, listeleme, ekleme, silme, güncelleme gibi işlemleri Java uygulamaları üzerinden yapmamıza olanak sağlayan bir pakettir.
  • JDBC API kullanımı için gerekli olan sınıflar java.sql paketinde yer alır.
  • JDBC yapısı veritabanından bağımsız olduğundan SQL destekleyen tüm ilişkisel veritabanı ile birlikte çalışır.
  • JDBC API kullanımı veritabanı sürücünün yüklenmesi, veritabanı bağlantısı, SQL sorgusunun gönderilmesi ve sonuçların alınması adımlarından oluşur.
  • Veritabanı bağlantısı için öncelikle kullanılacak olan veritabanı sistemine ait bağlantı sürücüsünün projeye eklenmesi gerekir.
  • Bu işlem komut yorumlayıcısına jar dosyasının dahil edilmesi, IDE arayüzünde libraries bölümüne eklenmesi veya Maven gibi paket yöneticilerinin kullanımı ile yapılabilir.

ORM

ORM (Object Relational Mapping) Nesne İlişkisel Eşleştirme şeklinde çevirebileceğimiz bu kavram ilişkisel veri tabanı ile uygulama içerisinde kullandığımız nesneleri birbirine bağlama tekniğidir. ORM prensipte, veritabanındaki bir tablonun oluşturduğumuz bir nesne ile eşleştirilmesidir. Bu sebeple OOP yani nesne yönelimli programlama dilleri ile birlikte çalışır. ORM’nin yazılımcıya sunduğu temel avantajlar şunlardır:

  • Geliştirilen uygulama, veri sisteminden bağımsız olur ve gerektiği taktirde veri tabanı zahmetsiz bir şekilde değiştirilebilir.
  • ORM sayesinde yazılımcı veri tabanı dillerini öğrenmeye ve tekrar eden CRUD operasyonlarına odaklanmak zorunda kalmaz. ORM, kod okunabilirliğini artırır, zamandan tasarruf sağlar.
  • Veri manipülasyon işlemlerini direkt olarak kullandığımız programlama dili ile yapabilmemizi sağlar ve hata oranını azaltır.

Farklı programlama dilleri için geliştirilmiş farklı ORM framework’leri vardır. Java için geliştirilmiş en popüler ORM framework’ü Hibarnate’tir. Bunun dışında EclipseLink, TopLink, IBatis gibi farklı framework’ler mevcuttur.

JPA

JPA (Jakarta Persistence API), ilişkisel verilerin Java sınıfları ile tutulmasına ve uygulamanın sonlanmasından sonra verinin kalıcı olmasını sağlayan teknolojidir. JPA, ORM işlemlerinde belli bir standartın oluşturulması amacı ille geliştirilmiştir. Yani JPA yalnızca bir spesifikasyondur. Bu anlamda JPA’yı izlenmesi gereken yönergeler veya bir arabirim olarak düşünmek mümkündür.

JPA, aynı işi farklı metot ismi-yöntemlerle yapan ORM araçlarının belirli bir standarta sahip olmayışından ve kütüphane karmaşıklığına yol açmasından ötürü ortaya çıkmıştır. Java topluluğu, Java ORM kütüphane standartlarını JPA olarak belirlemiştir. Bu sayede kullanılan ORM aracı ister Hibernate ister EclipseLink olsun aynı metot adları aynı sonucu verecektir.

Sonuç olarak JPA sadece bir standart ortaya koyar ve veri üzerinde kendisi bir işlem yapmaz. Bunun için bu standartları implemente eden ayrı bir araca ihtiyaç vardır, JPA implementasyonu yapan başlıca araçlar arasında Hibernate, TopLink, EclipseLink ve OpenJPA sayılabilir.

Hibernate

Hibernate, Java geliştiricileri için geliştirilmiş bir ORM aracı, framework’üdür. Hibernate, JDBC aracılığı ile veritabanı ve uygulama arasında ilişki kurarak, veritabanı üzerinde yapılan CRUD işlemlerini daha hızlı daha kolay ve daha basit bir şekilde yapabilmeyi sağlar.

JDBC ile veritabanına kayıt eklerken kullandığımız yapı;

statement.executeUpdate( "INSERT INTO musteri VALUES ('Ahmet', 'Kara')");

Hibernate ile kayıt eklerken kullanacağımız yapı;

session.save(musteri);

Projelerimizde Hibarnate kullanmak için onu Maven veya jar dosyası aracılığı ile ortamımıza eklememiz ardından XML dosyasına gerekli bilgileri girmemiz gerekir. Daha sonra oluşturacağımız POJO class’taki field’lar tablolarımızı şekillendirmemize yardımcı olacaktır. Veritabanı ile Java arasındaki ilişkiyi şu şekildedir ;

  • Sınıflar, Tablolara
  • Değişkenler, Sütunlara
  • Java’daki data türleri, SQL’deki data türlerine

karşılık gelmektedir.

Bunlar, Java ve veritabanı arasındaki ilişkinin temelini oluşturur. Bu uygulamalar Java ile veri tabanı arasında bir köprü, bir tercüman görevi görür ve veritabanı işlemlerinin oldukça basit bir hale gelmesini sağlar.

--

--