Download ppt - Hibernate ve jpa

Transcript
Page 1: Hibernate ve jpa

Hibernate ve JPA (Java Persistance API)

JPA Nedir : Java EE 5 ile gelen standart persistance (verinin kalıcı hale gelmesi) API'sidir.

Faydası : Daha önceden mevcut olan diğer veri kalıcılığı sağlayan kütüphanelerin (Hibernate, Toplink,

JDO gibi) ortak bir tanım altında birleştirilmesi.

Daha önce her kütüphane kendi API'sini veriyordu ve birinden diğerine geçiş zorlaşıyordu.

Page 2: Hibernate ve jpa

Veri Kalıcılığı Katmanı

Page 3: Hibernate ve jpa

JPA Provider Seçimine Örnek

Page 4: Hibernate ve jpa

JPA 3 ana bölümden oluşmaktadır

1. JPA Sınıf Hiyerarşisi 2. JPQL (Java Persistance Query

Language) 3. Nesne Tablo ilişkisini gösteren mapping

meta datası

Page 5: Hibernate ve jpa

JPA'da Önemli Sınıfların Hiyerarşisi

Page 6: Hibernate ve jpa

Metadata ve JPQL

Page 7: Hibernate ve jpa

Hibernate ve JPA

Hibernate daha eski ve büyük.JPA bir çok yapıyı buradan almış

Page 8: Hibernate ve jpa

Peki Hibernate ve JPA Arasında Ne Fark Var ?

JPA'nın sadece bir standart olduğunu unutmayalım. Hibernate onu implement ediyor.

Dolayısıyla JPA = Hibernate gibi düşünülebilir ancak arada bazı küçük farklılıklar halen var.

Page 9: Hibernate ve jpa

Örnek 1 : HQL ve JPQL arasındaki farklar

Hibernate ile de bir sorgulama dili geliyor. İsmi Hibernate Query Language (HQL).

HQL ile JPQL arasında farklar var. Örneğin en büyük fark HQL ile “from Customer” denirken JPQL ile “select from Customer” demek gerekiyor.

Dolayısıyla HQL ve JPQL aynı anda kullanılamazlar!

Page 10: Hibernate ve jpa

Örnek 2 : Default Constructor Kullanımı

The JPA specification requires that all persistent classes have a no-arg constructor. This constructor may be public or protected.

All persistent classes must have a default constructor (which can be non-public) so that Hibernate can instantiate them using Constructor.newInstance(). It is recommended that you have a default constructor with at least package visibility for runtime proxy generation in Hibernate.

Page 11: Hibernate ve jpa

Nesne Yönelimli Programlamada Temel Kavramlar

1. Veri Soyutlama (data abstraction) 2. Çok biçimlilik (polymorphisim) 3. Kalıtım (inheritance) 4. İlişkiler/Bağlantılar (association)

Page 12: Hibernate ve jpa

Örnek

Page 13: Hibernate ve jpa

Nesne Yönelimli Programlama Sebebiyle Hibernate Taklalar

Atmak Zorundadır Veri Soyutlama sebebiyle Reflection

kullanılır İlişki/Bağlantılar sebebiyle byte code

instrumentation veya kendi içindeki persistant sınıfları kullanır

Kalıtım için de çözümü vardır

Page 14: Hibernate ve jpa

Reflection ile gizlenmiş verilere erişme

Herşey java.lang.reflect.AccessibleObject ile olur

Page 15: Hibernate ve jpa

Sınıflar Arası Bağlantılar (Association)

Page 16: Hibernate ve jpa

Tek Yönlü Bağlantılar Many-To-One ve One-To-One İçin Byte

Code Provider Kullanır

Page 17: Hibernate ve jpa

Diğer Bağlantılar İçin Kendi içindeki Sınıfları Kullanılır

PersistentArrayHolder, PersistentBag, PersistentElementHolder, PersistentIdentifierBag, PersistentIndexedElementHolder, PersistentList, PersistentMap, PersistentSet gibi.

Page 18: Hibernate ve jpa

Hibernate İle İki Kademe Önbellek (cache) gelir

Birincil önbellek session'a bağlıdır ve session kapatılınca kaybolur.

İkincil önbellek ise session factory nesnesine bağlıdır ve session factory kapatılınca kaybolur.


Recommended