Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Hibernate ve jpa

hibernate ve jpa kullanımı

  • Login to see the comments

Hibernate ve jpa

  1. 1. 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.
  2. 2. Veri Kalıcılığı Katmanı
  3. 3. JPA Provider Seçimine Örnek
  4. 4. JPA 3 ana bölümden oluşmaktadır <ul><li>1. JPA Sınıf Hiyerarşisi </li></ul><ul><li>2. JPQL (Java Persistance Query Language) </li></ul><ul><li>3. Nesne Tablo ilişkisini gösteren mapping meta datası </li></ul>
  5. 5. JPA'da Önemli Sınıfların Hiyerarşisi
  6. 6. Metadata ve JPQL
  7. 7. Hibernate ve JPA <ul><li>Hibernate daha eski ve büyük.JPA bir çok yapıyı buradan almış </li></ul>
  8. 8. Peki Hibernate ve JPA Arasında Ne Fark Var ? <ul><li>JPA'nın sadece bir standart olduğunu unutmayalım. Hibernate onu implement ediyor. </li></ul><ul><li>Dolayısıyla JPA = Hibernate gibi düşünülebilir ancak arada bazı küçük farklılıklar halen var. </li></ul>
  9. 9. Örnek 1 : HQL ve JPQL arasındaki farklar <ul><li>Hibernate ile de bir sorgulama dili geliyor. İsmi Hibernate Query Language (HQL). </li></ul><ul><li>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. </li></ul><ul><li>Dolayısıyla HQL ve JPQL aynı anda kullanılamazlar! </li></ul>
  10. 10. Örnek 2 : Default Constructor Kullanımı <ul><li>The JPA specification requires that all persistent classes have a no-arg constructor. This constructor may be public or protected. </li></ul><ul><li>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. </li></ul>
  11. 11. Nesne Yönelimli Programlamada Temel Kavramlar <ul><li>1. Veri Soyutlama (data abstraction) </li></ul><ul><li>2. Çok biçimlilik (polymorphisim) </li></ul><ul><li>3. Kalıtım (inheritance) </li></ul><ul><li>4. İlişkiler/Bağlantılar (association) </li></ul>
  12. 12. Örnek
  13. 13. Nesne Yönelimli Programlama Sebebiyle Hibernate Taklalar Atmak Zorundadır <ul><li>Veri Soyutlama sebebiyle Reflection kullanılır </li></ul><ul><li>İlişki/Bağlantılar sebebiyle byte code instrumentation veya kendi içindeki persistant sınıfları kullanır </li></ul><ul><li>Kalıtım için de çözümü vardır </li></ul>
  14. 14. Reflection ile gizlenmiş verilere erişme <ul><li>Herşey java.lang.reflect.AccessibleObject ile olur </li></ul>
  15. 15. Sınıflar Arası Bağlantılar (Association)
  16. 16. Tek Yönlü Bağlantılar Many-To-One ve One-To-One İçin Byte Code Provider Kullanır
  17. 17. Diğer Bağlantılar İçin Kendi içindeki Sınıfları Kullanılır <ul><li>PersistentArrayHolder, PersistentBag, PersistentElementHolder, PersistentIdentifierBag, PersistentIndexedElementHolder, PersistentList, PersistentMap, PersistentSet gibi. </li></ul>
  18. 18. Hibernate İle İki Kademe Önbellek (cache) gelir <ul><li>Birincil önbellek session'a bağlıdır ve session kapatılınca kaybolur. </li></ul><ul><li>İkincil önbellek ise session factory nesnesine bağlıdır ve session factory kapatılınca kaybolur. </li></ul>

×