Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
ORM & Hibernate
Sabancı Üniversitesi Bilişim Teknolojileri
Yüksek Lisans Programı Seminerleri
2008
Ahmet DemirelliSCJP 5.0, SCWCD 1.4
Hakkımızda
� SabancıÜniversitesi BT Yüksek Lisans Programı� Yüksek Lisans Eğitimi
� Programlama (Java, JavaEE ,.NET, C#,Php)
� Database (Oracle, MySQL,MSSQL, PL/SQL)
� Network (LAN,WAN, Router Configuration.etc)
� Sistem ve Network Güvenliği
� http://www.sabanciuniv.edu/mdbf/kcenter/tr/
� Kurumsal Java eğitimleri� http://www.sabanciuniv.edu/btem
� En yakın eğitim : SPRING ve HIBERNATE 15 Aralık 2008 (Ingilizce)
� Teknoloji danışmanlığı ve yazılım projeleri geliştime
Ajanda
� Seminerin amacı
� Framework nedir� ORM nedir
� Hazır ORM Frameworkleri� Hibernate
� Perisitence Object
� Hibernate config
� Hibernate Mapping� Database işlemleri - HQL
� JPA
� Örnek Uygulama
Amaç
� Seminerin amacı
Framework
� Kolay uygulama geliştirme ortamı sunar
� Developer tarafından çokça yapılan ve zaman alan işleri kolaylaştırmak (db access,mvc ..etc)
� I18n kolaylaştırır (UI tarafında)
� Uygulamanın büyümesini kolaylaştırmak
� Tek noktadan kontrolü sağlamak (xml config)
� Mevcut uygulamaya yeni bir işlem veya servis yazmak için izlenecek yol bellidir
� Her katman için yazılmış “open source” frameworkler var
ORM Frameworkleri
� ORM Frameworku nedir� Object / Relational Mapping
� Sürekli olan DB ve SQL sorgulamaları (Uygulama kodlarının 1/3 ü DB erişimine yöneliktir)
� Veritabanından alınan bilgileri nesnelere dönüştürmek� Java nesnelerimizi tablolara yazmak
� Transaction Management� Performansı arttırır /bakımı kolaylaştırır
� DB erişim katmanına uygulama geliştiricilere kolaylık sağlar
Popüler ORM Frameworkleri
� ORM Frameworkleri� Hibernate
� Toplink
� JPA
� OpenJPA
� ...
Hibernate
� En popüler ORM framework
� Container dışında da kullanılabilir (Ornek: Swing uygulamaları)
� Son yıllardaki geliştirilen kurumsal uygulamaların genelde veri erişim katmanı olarak hibernate kullanırlar
� JPA standartı yayınlandıktan sonra yok olacağı düşünülebilir fakat JPA desteği olduğu için persistence provider hibernate kullanılabilir
� Çok fazla kabul gördüğü için JPA standartı geliştirilirken toplink ile beraber örnek alınmıştır
Hibernate
Örnek Uygulama
Persistence Object
� Persistence Object veya Entity� Veritabanında tablolarda saklanacak bilgilerin
Java nesnesi olarak karşılığı
� POJO (Plain Old Java Objects) – Bildigimiz java sınıfından başka bibirşey değil
Ogrenci
ogrencinoadsoyad
Persistence ObjectTable
Hibernate Konfigürasyon Dosyası
� hibernate.properties (text file)
� hibernate.cfg.xml (xml file)
Hibernate Konfigürasyon Dosyası
XML Mapping
� Hibernate tarafından yönetilmesini istediğimi her class için bir mapping (eşleştirme) gereklidir.
� Tablo lar ile Java Sınıfları (POJO) arasındaki eşleştirme bilgisini tutar
� Tek dosyada veya her mapping ayrı bir dosyada yapılabilir
XML MappingEmployee.java
Employees Tablosu
Employee.hbm.xml
Kod Kullanım – Oturum Açma
Configuration cfg = new Configuration();
cfg.configure();
SessionFactory sessionFactory =
cfg.buildSessionFactory();
Session session =
sessionFactory.openSession();
Kod Kullanım - Transaction
Transaction tx =
session.beginTransaction();
//insert-update-delete işlemleri
tx.commit();
Kod Kullanım - Select
Department dept =
(Department)session.get(Department.class
, 1);
Kod Kullanım - Insert
Employee e = new Employee();
e.setEmpName("Ahmet");
e.setEmpLastname("Demirelli");
e.setEmpDeptNo(1);
Transaction tx = session.beginTransaction();
session.save(e);
tx.commit();
Kod Kullanım - Update
Employee emp = new Employee();
emp.setEmpNo(1);
emp.setEmpName("Ali");
emp.setEmpLastname("Desidero");
emp.setEmpDeptNo(3);
Transaction tx = session.beginTransaction();
session.merge(emp);
tx.commit();
Kod Kullanım - Delete
Employee emp =
(Employee)session.get(Employee.class,
17);
Transaction tx =
session.beginTransaction();
session.delete(emp);
tx.commit();
HQL
� Hibernate Query Language
� SQL benzeri bir sorgulama dili
� Istediğimiz herhangi bir sql sorgulaması yapabilmemiz için var
String hql = "from Employee
employees where empno>2";
Query query = session.createQuery(hql);
List l = query.list();
JPA
� Hibernate, Toplink ve JDO iyi yönleri alınmış ve ORM için standart bir “persistence” frameworkü için bir standartlar belirlemiştir.
� POJO temellidir (Herhangi bir “class”tan veya “interface”den türetilmek zorunda değildir)
� Sınıflar ve DB arasındaki eşleştirmeler “Annotation” lar kullanılarak tanımlanabildiği gibi XML ile de yapılabilir
� “Persistence provider” olarak Hibernate veya Toplink seçilebilir.
� “Container” bağımlı değildir (Yani bir “application server” a ihtiyaç duymaz)