Java öğrenmeye karar verdiğinizde karşınıza sıkça çıkan bazı terimler vardır: POJO, SessionFactory, Hibernate, ORM gibi… İlk başta kulağa karmaşık gelse de bu kavramlar, aslında Java ile gerçek dünya uygulamaları geliştirmenin temel taşlarıdır.
Bu yazımızda, özellikle Vektörel Bilişim Java Kursu katılımcılarından gelen sorularla şekillendirilmiş şekilde, POJO (Plain Old Java Object) ve Session Factory kavramlarını sade bir dille açıklayacağız. Ayrıca bu kavramlar hakkında internette en çok aratılan sorulara net cevaplar vereceğiz.
POJO, yani "Plain Old Java Object", karmaşık kalıtım yapıları ya da framework bağımlılıkları içermeyen, sade ve yalın Java sınıflarını ifade eder. Aslında her Java geliştiricisinin yazdığı sıradan sınıflardır.
public class Kullanici { private String ad; private String soyad; public Kullanici() {} public String getAd() { return ad; } public void setAd(String ad) { this.ad = ad; } public String getSoyad() { return soyad; } public void setSoyad(String soyad) { this.soyad = soyad; } }
Özellikle Hibernate gibi ORM (Object-Relational Mapping) teknolojilerinde POJO sınıfları, veritabanı tablolarının temsilcisi olarak görev yapar. Yani yukarıdaki Kullanici sınıfı, veritabanında bir "kullanici" tablosunun karşılığı olabilir.
SessionFactory, Hibernate framework’ü içerisinde, veritabanı ile bağlantı kurmayı sağlayan oturumların (Session) üreticisi olan bir yapıdır. Genellikle uygulama başlarken bir kez oluşturulur ve tüm uygulama boyunca kullanılır.
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession();
Hibernate mimarisinde Session, veritabanı işlemlerini gerçekleştiren nesnedir. Ancak bu Session’ları üreten yapı SessionFactory’dir.
Evet, Hibernate gibi framework’lerde POJO sınıflarının getter ve setter metotlarını içermesi, ORM işlemlerinin doğru çalışması açısından önemlidir.
Hayır. Her JavaBean bir POJO’dur ama her POJO bir JavaBean değildir. JavaBean daha sıkı kurallara sahiptir (örn. Serializable olmalı).
Hibernate gibi araçlar, nesneleri yansıtma (reflection) yoluyla oluşturduğu için varsayılan constructor’ın (parametresiz) olması şarttır.
Hayır. SessionFactory nesnesi pahalı bir nesnedir. Yani sürekli oluşturulup yok edilmesi performans kaybına neden olur. Bu yüzden genellikle singleton pattern ile bir kez oluşturulur.
Evet. JPA (Java Persistence API) kullanıldığında EntityManager tercih edilir. Ancak arka planda yine Hibernate kullanılabilir.
Evet, Java kodu içerisinde programatik olarak yapılandırma yapılarak da SessionFactory kurulabilir. Ancak hibernate.cfg.xml dosyası kullanmak daha yaygındır.
Diyelim ki bir e-ticaret uygulaması geliştiriyorsunuz ve sipariş verilerini yönetmek istiyorsunuz. İşte o zaman POJO sınıfınız şu şekilde olabilir:
@Entity @Table(name = "siparisler") public class Siparis { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @Column(name = "urun_adi") private String urunAdi; // getter - setter metotları }
Bu sınıfın veritabanıyla ilişkilendirilmesi, Hibernate ve SessionFactory aracılığıyla gerçekleşir. Verileri veritabanından okuyabilir, güncelleyebilir veya yeni kayıt ekleyebilirsiniz.
Java dünyası ilk başta karmaşık görünse de doğru rehberlikle öğrenmek çok kolaydır. Eğer hem temel hem ileri düzeyde Java öğrenmek, POJO, Hibernate, Spring Boot gibi teknolojilere hâkim olmak istiyorsanız, Vektörel Bilişim Java Kursu sizin için en doğru adım olabilir.
Bu kursta:
...gibi pek çok önemli konu uygulamalı olarak öğretilmektedir.
Java, güçlü ve esnek bir dildir. Ancak bu dili etkin kullanmak için doğru kavramları bilmek ve doğru araçları kullanmak gerekir. POJO sınıfları ve SessionFactory, Java dünyasında veritabanı ile konuşan uygulamaların temel yapı taşlarıdır.
Eğer siz de bu kavramları sağlam bir şekilde öğrenmek ve Java’da bir adım öne çıkmak istiyorsanız, Vektörel Bilişim Java Eğitimi tam size göre.