Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM...

Preview:

Citation preview

ORM & Hibernate

Sabancı Üniversitesi Bilişim Teknolojileri

Yüksek Lisans Programı Seminerleri

2008

Ahmet DemirelliSCJP 5.0, SCWCD 1.4

ahmetdemirelli@sabanciuniv.edu

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)

SORULAR

ahmetdemirelli@sabanciuniv.edu

http://people.sabanciuniv.edu/ahmetdemirelli

Recommended