ahmet demirelli - sabancı Üniversitesipeople.sabanciuniv.edu/.../ceturk-hibernate.pdf · orm...

23
ORM & Hibernate Sabancı Üniversitesi Bilişim Teknolojileri Yüksek Lisans Programı Seminerleri 2008 Ahmet Demirelli SCJP 5.0, SCWCD 1.4 [email protected]

Upload: others

Post on 26-Sep-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

ORM & Hibernate

Sabancı Üniversitesi Bilişim Teknolojileri

Yüksek Lisans Programı Seminerleri

2008

Ahmet DemirelliSCJP 5.0, SCWCD 1.4

[email protected]

Page 2: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

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

Page 3: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

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

Page 4: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

Amaç

� Seminerin amacı

Page 5: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

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

Page 6: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

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

Page 7: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

Popüler ORM Frameworkleri

� ORM Frameworkleri� Hibernate

� Toplink

� JPA

� OpenJPA

� ...

Page 8: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

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

Page 9: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

Hibernate

Örnek Uygulama

Page 10: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

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

Page 11: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

Hibernate Konfigürasyon Dosyası

� hibernate.properties (text file)

� hibernate.cfg.xml (xml file)

Page 12: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

Hibernate Konfigürasyon Dosyası

Page 13: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

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

Page 14: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

XML MappingEmployee.java

Employees Tablosu

Employee.hbm.xml

Page 15: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

Kod Kullanım – Oturum Açma

Configuration cfg = new Configuration();

cfg.configure();

SessionFactory sessionFactory =

cfg.buildSessionFactory();

Session session =

sessionFactory.openSession();

Page 16: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

Kod Kullanım - Transaction

Transaction tx =

session.beginTransaction();

//insert-update-delete işlemleri

tx.commit();

Page 17: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

Kod Kullanım - Select

Department dept =

(Department)session.get(Department.class

, 1);

Page 18: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

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();

Page 19: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

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();

Page 20: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

Kod Kullanım - Delete

Employee emp =

(Employee)session.get(Employee.class,

17);

Transaction tx =

session.beginTransaction();

session.delete(emp);

tx.commit();

Page 21: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

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();

Page 22: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

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)

Page 23: Ahmet Demirelli - Sabancı Üniversitesipeople.sabanciuniv.edu/.../CETURK-Hibernate.pdf · ORM & Hibernate Sabancı Üniversitesi Bili şim Teknolojileri Yüksek Lisans Programı

SORULAR

[email protected]

http://people.sabanciuniv.edu/ahmetdemirelli