SlideShare a Scribd company logo
1 of 157
Bilgisayar Mühendisi Mimar ASLAN
www.udemy.com/u/mimaraslan
mimaraslan@gmail.com
JPA
Ve
ile
ORM
www.udemy.com/u/mimaraslan
Online Video Eğitimlerim
Yayınlanmış Kitaplarım
www.umuttepeyayinlari.com
Java Projelerinde Nesneler
• Java’da veriler uygulama çalıştığı zaman bellekte tutulurlar.
• Java nesnelerinin kendilerine has durumları ve davranışları
vardır.
• Nesne durumu tanımlanmış olan
değişkenin ve nesne refranslarının bellekte
ki tuttuğu veri değeri ve yaşam süresiyle
ilgilidir.
• Nesnelerin davranışlarını
metotlar belirler.
Konuş
Yürü
Bak
Alkışla
Oku
Gülümse
Çöp toplayıcı (garbage collector)
• Çalışması bittikten sonra kullanılmayan nesneleri, çöp toplayıcı
(garbage collector) otomatik olarak bellekten temizler.
• Kurumsal uygulamalarda nesnelerin tekrardan kullanımı için
nesnelerin kalıcılığını sağlamak çok önemlidir.
• Serializable ara yüzünü uygulayan
Java sınıflarına ait nesneler kalıcı
hale getirilirler.
Serializable Ara yüzü(Interface) ve Yararları
• Serializable Java’da nesneleri en kolay
yoldan kalıcı hale getirmeye yarar.
• Nesnelerin içerdiği veriler ağ
ortamında bit serileri halinde
taşınarak kalıcı disk ortamına da
kayıt edilirler.
• Çok katmanlı uygulamalarda katmanlar
arasında veri taşınırken veri kaybının
olmaması için Java sınıflarına uygulanır.
Serializable Ara yüzü(Interface)‘in Yetersizlikleri
• Taşıdığı veriler üzerinde
sorgu yapılamaz!
• Paralel erişimler ve dağıtık
yapıda bilgi paylaşımlarına izin
vermez!
POJO (Plain Old Java Object)
• POJO sınıfları sayesinde Java çatıları
arasında kolayca geçişler yapabiliriz.
• POJO içerisinde karmaşık işlemler
yapılmaz.
• POJO, JPA ve Hibernate kullanırken modellerimizi olusturmak
için kullanılır.
• POJO çok sade ve basit bir Java sınıfıdır.
• POJO sınıflarındaki nesneler Java’da
geri planda verileri geçici olarak
tutarlar.
POJO (Plain Old Java Object)
• POJO’nun hiçbir ekstrası yoktur ve bütün yüklerden arınmıştır.
JDBC(Java Database Connectivity) ve Yararları
• Java’da nesnelere ait verileri
varitabanlarına kaydederek
uzun süreli kalıcı hale
getirmekteyiz.
• JDBC ile babadan
kalma SQL sorgu dilini
kullanıp verileri
dilediğimiz gibi
sorgulayabiliriz.
JDBC(Java Database Connectivity) ve Eksikleri
• JDBC’de bağlantıların
açılması kapatılması ve
trancation gibi tüm
işlemleri bizim bizzat
yapmamız lazımdır!
• JDBC ile çok uzun
kodlamalar yapıldığından
dolayı en küçük kod
yanlış yazıldığında bile
çok ciddi hatalar
alabiliriz!
• Verileri tablolar halinde kayıt altına
alırlar.
RDBMS
(Relational Database Management System )
(İlişkisel Veritabanı Yönetim Sistemi)
• Bir sütun ise o kayıda ait bir alanı gösterir.
• Tablolar birbiri ile ilişki içinde organize
olabilirler.
• Her tablonun satırları ve sütunları vardır.
• Bir satır girilen bir kaydı gösterir.
ORM - O/R Mapping
(Object Relational Mapping)
(Nesne Veritabanı Haritalama)
• ORM Java sınıflarını veritabanındaki
tablolara dönüştürerek bizim veri
alışverişimizi kolaylaştıran bir
tekniktir.
ORM Araçları
• ORM ilişkisel veritabanındaki
tutulan verileri yönetmek için,
nesne modellerini kullanmamızı
sağlar.
• ORM ilişkisel veritabanı
(RDBMS) ile nesneye yönelik
programlamanın (OO) dünyası
arasında köprü vazifesi görür.
ORM - O/R Mapping
(Object Relational Mapping)
(Nesne Veritabanı Haritalama)
• ORM sayesinde bunların hepsini ve
daha fazlasını kolayca ve otomatik
olarak yapabiliyoruz.
• Eskiden OOP yazılımları geliştirirken her tabloya
karşılık gelen bir sınıfı kendimiz elle
oluşturuyorduk. Mesela Personel isminde bir sınıf
ve onun içinde de id , adi , soyadi , maasi
alan(field) ve özellikler(property)lerini
oluşturuyorduk. Ardından da JDBC ile Update,
Insert, Delete ve Select sorgularını hazırlıyorduk.
ORM'nin Avantajları
• ORM babadan kalma SQL sorgusu yazmamıza da izin verir.
• ORM tekniği sadece Java programlama
diline bağlı değildir ve her OO dilinde
kullanılabilir.
• ORM sayesinde veritabanıyla babadan kalma
SQL yerine nesneler üzerinden ORM aracına
özel sorgu dili ile kolayca yaparız.
• ORM ile gömülü SQL, stored procedürler ve
interfaceler ilişkisel veri tabanlarına göre daha
kısa kodlarla yazılır.
• ORM kullandığımız zaman kodlama zamanı
kısalır ve daha sonradan da kodun bakımı
kolaylaşır.
• ORM araçlarıyla veritabanından bağımsız, katmanlı
uygulamalar geliştirebiliriz.
ORM'nin Avantajları
• ORM ilişkisel veritabanı (RDBMS) ile nesneye yönelik
programlamanın (OO) dünyası arasında köprü vazifesi görür.
ORM Araçlarını Kullanmanın Yolları
• ORM araçları, proje geliştirmede çok pratik
destekler sağlamaktadır.
• 1.Yol veritabanımızı önceden biz kendimiz
hazırlarız. Sonra da java sınıflarını oluştururuz.
• 2.Yol önce java sınıflarımızı hazırlarız, ardından da
veritabanını tasarlarız.
• Bir projede hem ORM hem de kendi SQL ve
Java kodumuzu da yazabiliriz.
• ORM araçları veritabanı işlemlerinin
karmaşıklığını bizim için gizler ve
veritabanlarından bağımsız olarak nesne
modelimizle çalışmamızı sağlar.
• Günümüzde kullanılan
popüler programlama
dillerine özel bir çok ORM
kütüphaneleri vardır.
Bunlara ORM araçları (ORM
Tools) denir.
ORM ARACI
• ORM araçları code
generation tekniği
kullanarak bizim elle
yazmamız gereken kodları
otomatik üretir.
• ORM araçları sayesinde kod
yazımını kısalır ve yazılım
bakımını da kolaylaşır.
ORM Araçları
ORM Araçları
• Hibernate
• Apache OpenJPA
• Apache Cayenne
• EclipseLink
• IBatis
• Spring Jdbc Template
ORM Araçları
• Hibernate, bir Java standartı değildir ama
sektörde de-facto standart olarak kabul görmüştür!
• Kurumsal Java Web
projelerindeki en popüler ORM
aracı Hibernate’tir.
ORM Araçları
• ORM araçlarıyla, bir nesneyi
veritabanına kaydetme,
güncelleme, sorgulama ve silme
işlemi sıradan düz SQL
bağlantılarına göre daha güvenli
ve daha kolaydır.
• Her kütüphanenin kendine özgü metotları ve çalışma mantığı
vardır.
ORM Araçları Kullanmanın Yan Tesirleri
• Projelerde ORM aracı kullanmak
kesinlikle mecburi değildir!
• Büyük uygulamalar geliştiriyorsanız
kesinlikle bir tane ORM aracı
kullanmanızı yerinde olacaktır.
• ORM araçlarının kullanıldığı zaman en
büyük sorun performans sorunudur.
ORM Araçları Kullanmanın Yan Tesirleri
• ORM aracı tarafından üretilen SQL sorgu kodları her zaman
performanslı olmayabilir. Bazen otomatik oluşturulan sorguları
güzelleştirmek için değişiklikleri bizzat kendimiz yapmalıyız.
ORM Araçları Kullanmanın Yan Tesirleri
• Kontrolün tamamen bizim elimizde olmamasından dolayı geri
planda meydana gelen bazı sorunlara müdahale edemeyebilir! O
zaman saf SQL kodu yazmamız gerekebilir.
Java Persistence API - JPA Nedir?
• JPA, Java EE 5 ile gelen standart persistance yani verinin kalıcı
hale getirmesini sağlayan, bir ORM teknoloji API’sidir.
• JPA veritabanı tablosu ile kalıcılık nesnelerini eşleştirmek için
meta verileri kullanır.
• Annotataion(dipnot,
açıklama) tabanlıdır.
• EJB’lerin entity(varlık)
kısımlarını JPA oluşturur.
• JPQL sorgulama dili özelliği vardır.
• Bütün ORM araçlarına desteği vardır.
• Java EE standartıdır.
Java Persistence API - JPA Nedir?
Java Persistence API - JPA Nedir?
• JPA’nın çıkış amacı önceden mevcut olan diğer veri kalıcılığını
sağlayan kütüphanelerin ORM araçlarından Hibernate, Toplink,
JDO gibi... Ortak bir tanım altında birleştirmekti. Bugün JPA bunu
da başarmıştır!
• JPA’dan önce projelerde her kütüphane kendine özel API'sini
kullanırdı ve birinden diğerine geçiş zordu.
VERİ ERİŞİM KATMANI
JPA
• ORM ürünlerini JPA başlığı
altında kullanırsak istediğiniz
kütüphaneye kolayca geçiş
yapabiliriz.
• JPA bir persistence uygulaması
değildir. JPA persistence
uygulamalarını yöneten, bir
spesifikasyondur.
• Java Persistence API, nesnelerin ve
ilişkilerinin veritabanında eşlemesini
standartlaştırır.
Java Persistence API - JPA Nedir?
• JPA, ilişkisel verilerin (Relational Data),
Java nesneleriyle nasıl ilişkilendirileceği
üzerinde durur.
• Java’daki bir ve birden çok nesnenin
durumlarını ve veritabanındaki
karşılıklarının tutarlı olarak varlıklarını
devam ettirmesiyle JPA ilgilenir.
Java Persistence API ile ORM
• JPA, nesnelerin ilişkisel veri
tabanında(Relational
DataBase) haritalanıp
erişilmesini bize sağlar.
JPA spesifikasyonu ve implementasyonu
• Hibernate, EclipseLink, gibi... ORM araçları ise birer JPA
implementasyonudur.
• JPA, enterprise Java ve ORM dünyasındaki gelişmelerin
neticesinde ortaya çıkmış bir Persistence API’dir.
• Spesifikasyon kağıt üzerinde
uyulması gereken bir takım
tanımlamalardan ve
kurallardan ibarettir. JPA
• JPA, ORM araçlarının hepsininin çalışmasını tek çatı altında
toplayan bir spesifikasyondur.
• Bir spesifikasyonu iskelete benzetebiliriz.
• İmplementasyon ise spesifikasyonunun ete
kemiğe bürünmüş halidir.
JPA'nın Avantajları
• Uygulamada JPA ile çalışmak kullandığınız ORM
implementasyonlarıdan tamamen izole olmak demektir!
• JPA, uygulamayı ORM üreticisinden bağımsız kılar.
JPA'nın Avantajları
• İmplementasyonlar,
spesifikasyon ile uyumlu
oludurlar ve kendilerine
has özellikleri vardır.
• Uygulamalarda veri erişim
katmanında doğrudan ORM
implementasyonlarından birisini
kullanmak yerine, ORM
işlemlerimizi doğrudan JPA ile
gerçekleştirmenin daha çok
artıları vardır.
JPA'nın Avantajları
• JPA veritabanları ile bağlantı kurarken kendisine hangi
veritabanının driver(sürücü)'sünü gösterirseniz o veritabanı ile
bağlantıya geçer.
• JPA kendine ait bir sorgu dili
JPQL kullandığı için
veritabanlarına özel sorgu
kelimelerinden bağımsızdır.
Yani uygulamanın bilgilerini
depolayan veritabanınızı
istediğiniz an sorunsuzca
değiştirebilirsiniz.
• JPQL sorguları sayesinde uygulamın altında hangi veritabanı
olursa olsun farketmez. Sorgularınızı bütün veritabanları
sorunsuzca anlar ve algılar.
• Uygulamada sadece JPA ile çalışmak kullandığınız ORM
implementasyonlarıdan tamamen bağımsız izole olmaktır!
JPA'nın Avantajları
Java Application Architecture
(Java Uygulama Mimarisi)
Presentation Layer
Gösterim Katmanı
Business Layer
İş Katmanı
Persistence Layer
Kalıcılık Katmanı
Presentation Layer
Gösterim Katmanı
Business Layer
İş Katmanı
Persistence Layer
Kalıcılık Katmanı JPA
JMS
EJB
JSF
JSP
Java Application Architecture
(Java Uygulama Mimarisi)
• Uygumala içindeki Kalıcılığı Katmanı bizim için çok önemlidir.
JPA ve ORM araçları bu katmanda vazife alırlar.
Java Application Architecture
(Java Uygulama Mimarisi)
Presentation Layer
Gösterim Katmanı
Business Layer
İş Katmanı
Persistence Layer
Kalıcılık Katmanı
• JPA'nın bir Java standartı
olduğunu asla
unutmayalım. Hibernate
onu implement eder. JPA
eşittir Hibernate gibi
düşünmek doğru değildir!
JPA bütün ORM
araçlarının üzerinde ince
bir katmandır.
Java Application Architecture
(Java Uygulama Mimarisi)
• Hibernate daha eski ve
daha kapsamlıdır. JPA
tasarlanırken bir çok
yapısını Hibernate’ten
örnek almıştır.
JPA - Java Persistence API Architecture
(Java Kalıcılık API Mimarisi)
Query
Interface
JPQL
Query
Methods
Persistence Objects
(Kalıcılık Nesnesleri)
Query API
Sorgu
Metotları
Sorgulama
Dili
Sorgu Ara
yüzü
Entity (Varlık) Nedir?
Nasıl Kullanılır?
• Bir nesnenin entity olması için o nesnin sınıfın üzerinde
@Entity dipnotunun olması yeterlidir.
• Entity nesneleri
veritabanına
haritalandığı için
bellekten silinse
bile
veritabanındaki
karşılığı durur.
• Inner class(iç sınıf)tan, bir interface(ara yüz)den, tipi enum olan
bir değişkenden, erişim belirteci olarak final kullanan bir sınıftan
veya da nesneden entity olmaz!
Entity (Varlık) Nedir?
Nasıl Kullanılır?
• Entity olmak isteyen bir sınıfın public veya da protected erişim
tipinde boş parametreli yapılandırıcısı olmalıdır.
• Java’da nesneler ana bellekte yaşarlar. Entity’ler de bir Java
nesnesidir. Java’da her şey nesnedir.
• JPA’yı kullanarak ilişkisel veritabanına haritalanıp kalıcı hale
getirilecek olan nesnelere Entity (Varlık) denir.
• JPA tarafından
veritabanına bir defa
haritalan bir Java
nesnesi artık Entity
nesnesi olarak
muamele görür ve
JPA’nın emrinde
yönetilmeye hazırdır!
• Entity nesneleri ile nesne yönelimli programlama dünyasındaki
veri soyutlama (data abstraction) çok biçimlilik (polymorphisim)
kalıtım (inheritance) ilişkiler ve bağlantılar (association) gibi...
Aklınıza gelebilecek tüm işleri ilişkisel veritabanlarına başarıyla
aktarabiliriz.
Entity (Varlık) Nedir?
Nasıl Kullanılır?
JPA Entity (Varlık) Mimarisi
1
2
• Tablolarımız veritabanında oluşturulduktan sonra entity
manager ile arama, ekleme, düzenleme ve silme gibi... Bütün
işlemleri yönetebiliriz.
EntityManager Nedir?
Nasıl Kullanılır?
Callbacks (Çağırılar)
Listeners(Dinleyiciler)
• Kalıcı hale getirilmiş olan nesnelerin yaşam döngülerini takip
ederek kontrollerine izin verir.
• Verilere paralel olarak yapılan erişimleri koltrol altında tutmak
için bu mekanizmalardan yararlanabiliriz.
Transaction ve Locking(Kilitleme)
• JTA (Java Tranction API)
sayesinde veri eşimlerine
dair denetimleri kolayca
sağlıyoruz.
Metadata (Üstveri)
• Metadata veriyi tanımlamaktır. Verinin nasıl kullanılacağını ve
sistemlerin verileri nasıl yöneteceğini de metadata tarif eder.
• Veri hakkındaki bilgiye metadata (üstveri) denir.
• JPA bir sınıfı veritabanına dönüştürürken metadatalardan
yararlanır.
• Bu tabloda bazı alanlar
var, her bir alanın boyu
ve tipi bunun gibi
özelliklerin hepsi
metadata'dır.
• Notasyonlar XML yapılandırma dosyasında yaptığımız
ayarların daha pratik olarak Java kodunda yapılmasıdır.
• Notasyonlar sayesinde Java uygulamalarında ayarları tutan
XML dosyalarına olan ihtiyaç daha aza inmiştir!
• Dipnotlar - Notasyonlar (Annotations) ile
Entitiy’lerin meta veri özelliklerini Java
kodunda belirlemeye yararlar.
• Notasyonlar @ işareti ile başlar. Sınıfların,
nesnelerin, değişkenlerin, metotların kısaca Java
sınıflarındaki yer alan her şeyin hemen bir üst
satırında kullanılarak işimizi oldukça kolaylaştırırlar.
Dipnotlar - Notasyonlar (Annotations)
Dipnotlar - Notasyonlar (Annotations)
• Notasyonlar sayesinde veritabanına tablo olarak haritalanacak
olan Java sınıfının içinde tabloya dair özellkilerini de belirtmiş
oluyoruz!
• Java sınıflarından veritabanındaki tablolardaki verileri JPA
kullanarak sorgulamak için kullanılan sorgu dilidir.
JPQL (Java Persistence Query Language)
• SQL cümlelerini JPA teknolojisi JPQL dili ile kendisi oluşturur.
• JPQL aslında babadan
kalma SQL sorgu diline
benzer tarzda aynı
mantıkta çalışır ama SQL
değildir! Sorgu söz dizimleri
farklıdır.
JPQL (Java Persistence Query Language)
• Hibernate Query Language (HQL) adında Hibernate’in de
kendine has bir sorgu dili vardır. HQL ile JPQL arasında da
bazı küçük söz dizimi farkları vardır.
• Babadan kalma SQL ile JPQL sorgu dilini aynı anda
kullanabiliriz.
• HQL ve JPQL sorgu dilini
aynı anda kullanamayız!
• Veritabanındaki her tablo için aynı isme sahip bir tane java
sınıfı(Entity Class) vardır.
Persistence Unit ve Entity Classes
• Persistence unit, doğrudan veritabanı ile iletişim halinde olma
zorunluluğumuzu ortadan kaldırır.
• Persistance
unit veritabanı ile
uygulama arasında
kurulan köprüdür.
Persistenece.xml Ayar Dosyası
• JPA ve veritabanıyla ilgili olarak yapılacak
ayarları persistence.xml isimli bir dosyada yapılmaktadır.
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
Hibernate Geliştirme Ortamının Hazırlanması
@Id - @Column
@Id - @Column
@Id - @Column
@Id - @Column
@Id - @Column
@Id - @Column
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne XML Mapping
OneToOne Annotation
OneToOne Annotation
OneToOne Annotation
OneToOne Annotation
OneToOne Annotation
OneToOne Annotation
OneToOne Annotation
OneToOne Annotation
OneToOne Annotation
OneToOne Annotation
OneToOne Annotation
OneToOne Annotation
CRUD İşlemleri
CRUD İşlemleri
CRUD İşlemleri
CRUD İşlemleri
CRUD İşlemleri
CRUD İşlemleri
CRUD İşlemleri
CRUD İşlemleri
CRUD İşlemleri
CRUD İşlemleri
CRUD İşlemleri
CRUD İşlemleri
CRUD İşlemleri
CRUD İşlemleri
CRUD İşlemleri
CRUD İşlemleri
CRUD İşlemleri
CRUD İşlemleri
HQL - Etiketli Parametre Kullanımı
HQL - Etiketli Parametre Kullanımı
HQL - Etiketli Parametre Kullanımı
HQL - Soru İşaretli Parametre Kullanımı
HQL - Soru İşaretli Parametre Kullanımı
HQL - Soru İşaretli Parametre Kullanımı
HQL - Update
HQL - Update
HQL - Update
HQL - Update
HQL - Update
HQL - Update
HQL - Update
Soru - Cevap
Güzel gören, güzel düşünür.
Güzel düşünen, hayatından lezzet alır.
B.S.N.
JPA ve Hibernate ile ORM seminerine
katılıp beni sabırla dinlediğiniz için
sizlere çok teşekkür ederim.
Bilgisayar Mühendisi Mimar ASLAN
www.udemy.com/u/mimaraslan
mimaraslan@gmail.com

More Related Content

Viewers also liked

Spring framework egitimi ders 1. genel bir bakis
Spring framework egitimi   ders 1. genel bir bakisSpring framework egitimi   ders 1. genel bir bakis
Spring framework egitimi ders 1. genel bir bakis
Baris Dere
 

Viewers also liked (9)

Beykoz Meslek Yüksekokulu - (JavaServer Faces) JSF
Beykoz Meslek Yüksekokulu - (JavaServer Faces) JSFBeykoz Meslek Yüksekokulu - (JavaServer Faces) JSF
Beykoz Meslek Yüksekokulu - (JavaServer Faces) JSF
 
Bilecik Şeyh Edebali Üniversitesi - (JavaServer Faces) JSF
Bilecik Şeyh Edebali Üniversitesi - (JavaServer Faces) JSFBilecik Şeyh Edebali Üniversitesi - (JavaServer Faces) JSF
Bilecik Şeyh Edebali Üniversitesi - (JavaServer Faces) JSF
 
Kocaeli Üniversitesi - (JavaServer Faces) JSF
Kocaeli Üniversitesi -  (JavaServer Faces) JSFKocaeli Üniversitesi -  (JavaServer Faces) JSF
Kocaeli Üniversitesi - (JavaServer Faces) JSF
 
Spring framework egitimi ders 1. genel bir bakis
Spring framework egitimi   ders 1. genel bir bakisSpring framework egitimi   ders 1. genel bir bakis
Spring framework egitimi ders 1. genel bir bakis
 
SRS for student database management system
SRS for student database management systemSRS for student database management system
SRS for student database management system
 
Türkiye tanıtım sunusu ingilizce
Türkiye tanıtım sunusu ingilizceTürkiye tanıtım sunusu ingilizce
Türkiye tanıtım sunusu ingilizce
 
Turkey Ppt
Turkey PptTurkey Ppt
Turkey Ppt
 
Turkey presentation
Turkey presentationTurkey presentation
Turkey presentation
 
presentation of Turkey
presentation of Turkeypresentation of Turkey
presentation of Turkey
 

Similar to Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM

AnkaraJUG Nisan 2013 - Java Persistance API
AnkaraJUG Nisan 2013 - Java Persistance APIAnkaraJUG Nisan 2013 - Java Persistance API
AnkaraJUG Nisan 2013 - Java Persistance API
Ankara JUG
 
Caylak Javacilara Yol Haritasi
Caylak Javacilara Yol HaritasiCaylak Javacilara Yol Haritasi
Caylak Javacilara Yol Haritasi
mehmetbicak
 
Caylak Javacilara Yol Haritasi
Caylak Javacilara Yol HaritasiCaylak Javacilara Yol Haritasi
Caylak Javacilara Yol Haritasi
mehmetbicak
 
Programlama kitaplari
Programlama kitaplariProgramlama kitaplari
Programlama kitaplari
sersld96
 
Kod günleri veritabnı
Kod günleri veritabnıKod günleri veritabnı
Kod günleri veritabnı
Mustafa Tepe
 
Oracle kursu-bagcilar
Oracle kursu-bagcilarOracle kursu-bagcilar
Oracle kursu-bagcilar
sersld83
 
Embarcadero ER/Studio XE3 Sunum
Embarcadero ER/Studio XE3 SunumEmbarcadero ER/Studio XE3 Sunum
Embarcadero ER/Studio XE3 Sunum
BTGrubu
 

Similar to Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM (20)

İlişkisel Veritabanları, ORM ve Doctrine
İlişkisel Veritabanları, ORM ve Doctrineİlişkisel Veritabanları, ORM ve Doctrine
İlişkisel Veritabanları, ORM ve Doctrine
 
AnkaraJUG Nisan 2013 - Java Persistance API
AnkaraJUG Nisan 2013 - Java Persistance APIAnkaraJUG Nisan 2013 - Java Persistance API
AnkaraJUG Nisan 2013 - Java Persistance API
 
Reactive programming
Reactive programmingReactive programming
Reactive programming
 
Caylak Javacilara Yol Haritasi
Caylak Javacilara Yol HaritasiCaylak Javacilara Yol Haritasi
Caylak Javacilara Yol Haritasi
 
Caylak Javacilara Yol Haritasi
Caylak Javacilara Yol HaritasiCaylak Javacilara Yol Haritasi
Caylak Javacilara Yol Haritasi
 
Java SE 8 Programming
Java SE 8 Programming Java SE 8 Programming
Java SE 8 Programming
 
Mevlana Üniversitesi - JSF ve Primefaces UI
Mevlana Üniversitesi - JSF ve Primefaces UIMevlana Üniversitesi - JSF ve Primefaces UI
Mevlana Üniversitesi - JSF ve Primefaces UI
 
Programlama kitaplari
Programlama kitaplariProgramlama kitaplari
Programlama kitaplari
 
Kod günleri veritabnı
Kod günleri veritabnıKod günleri veritabnı
Kod günleri veritabnı
 
Kod günleri veritabnı
Kod günleri veritabnıKod günleri veritabnı
Kod günleri veritabnı
 
Nosql & MongoDB
Nosql & MongoDBNosql & MongoDB
Nosql & MongoDB
 
Nedir Bu Java ?
Nedir Bu Java ?Nedir Bu Java ?
Nedir Bu Java ?
 
Bileşke Türler
Bileşke TürlerBileşke Türler
Bileşke Türler
 
yazılımmuh10.pptx
yazılımmuh10.pptxyazılımmuh10.pptx
yazılımmuh10.pptx
 
ASP.Net MVC ile Web Uygulamaları -8(NHibernate)
ASP.Net MVC ile Web Uygulamaları -8(NHibernate)ASP.Net MVC ile Web Uygulamaları -8(NHibernate)
ASP.Net MVC ile Web Uygulamaları -8(NHibernate)
 
Programlama Dili Olarak JAVA - Muhammet ÇAĞATAY
Programlama Dili Olarak JAVA - Muhammet ÇAĞATAYProgramlama Dili Olarak JAVA - Muhammet ÇAĞATAY
Programlama Dili Olarak JAVA - Muhammet ÇAĞATAY
 
C# 4.0 new features - innova
C# 4.0   new features - innovaC# 4.0   new features - innova
C# 4.0 new features - innova
 
JVM Tuning and Monitoring, JVM Languages, IDE
JVM Tuning and Monitoring, JVM Languages, IDEJVM Tuning and Monitoring, JVM Languages, IDE
JVM Tuning and Monitoring, JVM Languages, IDE
 
Oracle kursu-bagcilar
Oracle kursu-bagcilarOracle kursu-bagcilar
Oracle kursu-bagcilar
 
Embarcadero ER/Studio XE3 Sunum
Embarcadero ER/Studio XE3 SunumEmbarcadero ER/Studio XE3 Sunum
Embarcadero ER/Studio XE3 Sunum
 

Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM

  • 1. Bilgisayar Mühendisi Mimar ASLAN www.udemy.com/u/mimaraslan mimaraslan@gmail.com JPA Ve ile ORM
  • 4. Java Projelerinde Nesneler • Java’da veriler uygulama çalıştığı zaman bellekte tutulurlar. • Java nesnelerinin kendilerine has durumları ve davranışları vardır. • Nesne durumu tanımlanmış olan değişkenin ve nesne refranslarının bellekte ki tuttuğu veri değeri ve yaşam süresiyle ilgilidir. • Nesnelerin davranışlarını metotlar belirler. Konuş Yürü Bak Alkışla Oku Gülümse
  • 5. Çöp toplayıcı (garbage collector) • Çalışması bittikten sonra kullanılmayan nesneleri, çöp toplayıcı (garbage collector) otomatik olarak bellekten temizler. • Kurumsal uygulamalarda nesnelerin tekrardan kullanımı için nesnelerin kalıcılığını sağlamak çok önemlidir.
  • 6. • Serializable ara yüzünü uygulayan Java sınıflarına ait nesneler kalıcı hale getirilirler. Serializable Ara yüzü(Interface) ve Yararları • Serializable Java’da nesneleri en kolay yoldan kalıcı hale getirmeye yarar. • Nesnelerin içerdiği veriler ağ ortamında bit serileri halinde taşınarak kalıcı disk ortamına da kayıt edilirler. • Çok katmanlı uygulamalarda katmanlar arasında veri taşınırken veri kaybının olmaması için Java sınıflarına uygulanır.
  • 7. Serializable Ara yüzü(Interface)‘in Yetersizlikleri • Taşıdığı veriler üzerinde sorgu yapılamaz! • Paralel erişimler ve dağıtık yapıda bilgi paylaşımlarına izin vermez!
  • 8. POJO (Plain Old Java Object) • POJO sınıfları sayesinde Java çatıları arasında kolayca geçişler yapabiliriz. • POJO içerisinde karmaşık işlemler yapılmaz. • POJO, JPA ve Hibernate kullanırken modellerimizi olusturmak için kullanılır. • POJO çok sade ve basit bir Java sınıfıdır. • POJO sınıflarındaki nesneler Java’da geri planda verileri geçici olarak tutarlar.
  • 9. POJO (Plain Old Java Object) • POJO’nun hiçbir ekstrası yoktur ve bütün yüklerden arınmıştır.
  • 10. JDBC(Java Database Connectivity) ve Yararları • Java’da nesnelere ait verileri varitabanlarına kaydederek uzun süreli kalıcı hale getirmekteyiz. • JDBC ile babadan kalma SQL sorgu dilini kullanıp verileri dilediğimiz gibi sorgulayabiliriz.
  • 11. JDBC(Java Database Connectivity) ve Eksikleri • JDBC’de bağlantıların açılması kapatılması ve trancation gibi tüm işlemleri bizim bizzat yapmamız lazımdır! • JDBC ile çok uzun kodlamalar yapıldığından dolayı en küçük kod yanlış yazıldığında bile çok ciddi hatalar alabiliriz!
  • 12. • Verileri tablolar halinde kayıt altına alırlar. RDBMS (Relational Database Management System ) (İlişkisel Veritabanı Yönetim Sistemi) • Bir sütun ise o kayıda ait bir alanı gösterir. • Tablolar birbiri ile ilişki içinde organize olabilirler. • Her tablonun satırları ve sütunları vardır. • Bir satır girilen bir kaydı gösterir.
  • 13. ORM - O/R Mapping (Object Relational Mapping) (Nesne Veritabanı Haritalama) • ORM Java sınıflarını veritabanındaki tablolara dönüştürerek bizim veri alışverişimizi kolaylaştıran bir tekniktir. ORM Araçları • ORM ilişkisel veritabanındaki tutulan verileri yönetmek için, nesne modellerini kullanmamızı sağlar. • ORM ilişkisel veritabanı (RDBMS) ile nesneye yönelik programlamanın (OO) dünyası arasında köprü vazifesi görür.
  • 14. ORM - O/R Mapping (Object Relational Mapping) (Nesne Veritabanı Haritalama) • ORM sayesinde bunların hepsini ve daha fazlasını kolayca ve otomatik olarak yapabiliyoruz. • Eskiden OOP yazılımları geliştirirken her tabloya karşılık gelen bir sınıfı kendimiz elle oluşturuyorduk. Mesela Personel isminde bir sınıf ve onun içinde de id , adi , soyadi , maasi alan(field) ve özellikler(property)lerini oluşturuyorduk. Ardından da JDBC ile Update, Insert, Delete ve Select sorgularını hazırlıyorduk.
  • 15. ORM'nin Avantajları • ORM babadan kalma SQL sorgusu yazmamıza da izin verir. • ORM tekniği sadece Java programlama diline bağlı değildir ve her OO dilinde kullanılabilir. • ORM sayesinde veritabanıyla babadan kalma SQL yerine nesneler üzerinden ORM aracına özel sorgu dili ile kolayca yaparız. • ORM ile gömülü SQL, stored procedürler ve interfaceler ilişkisel veri tabanlarına göre daha kısa kodlarla yazılır. • ORM kullandığımız zaman kodlama zamanı kısalır ve daha sonradan da kodun bakımı kolaylaşır.
  • 16. • ORM araçlarıyla veritabanından bağımsız, katmanlı uygulamalar geliştirebiliriz. ORM'nin Avantajları • ORM ilişkisel veritabanı (RDBMS) ile nesneye yönelik programlamanın (OO) dünyası arasında köprü vazifesi görür.
  • 17. ORM Araçlarını Kullanmanın Yolları • ORM araçları, proje geliştirmede çok pratik destekler sağlamaktadır. • 1.Yol veritabanımızı önceden biz kendimiz hazırlarız. Sonra da java sınıflarını oluştururuz. • 2.Yol önce java sınıflarımızı hazırlarız, ardından da veritabanını tasarlarız. • Bir projede hem ORM hem de kendi SQL ve Java kodumuzu da yazabiliriz. • ORM araçları veritabanı işlemlerinin karmaşıklığını bizim için gizler ve veritabanlarından bağımsız olarak nesne modelimizle çalışmamızı sağlar.
  • 18. • Günümüzde kullanılan popüler programlama dillerine özel bir çok ORM kütüphaneleri vardır. Bunlara ORM araçları (ORM Tools) denir. ORM ARACI • ORM araçları code generation tekniği kullanarak bizim elle yazmamız gereken kodları otomatik üretir. • ORM araçları sayesinde kod yazımını kısalır ve yazılım bakımını da kolaylaşır. ORM Araçları
  • 19. ORM Araçları • Hibernate • Apache OpenJPA • Apache Cayenne • EclipseLink • IBatis • Spring Jdbc Template
  • 20. ORM Araçları • Hibernate, bir Java standartı değildir ama sektörde de-facto standart olarak kabul görmüştür! • Kurumsal Java Web projelerindeki en popüler ORM aracı Hibernate’tir.
  • 21. ORM Araçları • ORM araçlarıyla, bir nesneyi veritabanına kaydetme, güncelleme, sorgulama ve silme işlemi sıradan düz SQL bağlantılarına göre daha güvenli ve daha kolaydır. • Her kütüphanenin kendine özgü metotları ve çalışma mantığı vardır.
  • 22. ORM Araçları Kullanmanın Yan Tesirleri • Projelerde ORM aracı kullanmak kesinlikle mecburi değildir! • Büyük uygulamalar geliştiriyorsanız kesinlikle bir tane ORM aracı kullanmanızı yerinde olacaktır. • ORM araçlarının kullanıldığı zaman en büyük sorun performans sorunudur.
  • 23. ORM Araçları Kullanmanın Yan Tesirleri • ORM aracı tarafından üretilen SQL sorgu kodları her zaman performanslı olmayabilir. Bazen otomatik oluşturulan sorguları güzelleştirmek için değişiklikleri bizzat kendimiz yapmalıyız.
  • 24. ORM Araçları Kullanmanın Yan Tesirleri • Kontrolün tamamen bizim elimizde olmamasından dolayı geri planda meydana gelen bazı sorunlara müdahale edemeyebilir! O zaman saf SQL kodu yazmamız gerekebilir.
  • 25. Java Persistence API - JPA Nedir? • JPA, Java EE 5 ile gelen standart persistance yani verinin kalıcı hale getirmesini sağlayan, bir ORM teknoloji API’sidir. • JPA veritabanı tablosu ile kalıcılık nesnelerini eşleştirmek için meta verileri kullanır.
  • 26. • Annotataion(dipnot, açıklama) tabanlıdır. • EJB’lerin entity(varlık) kısımlarını JPA oluşturur. • JPQL sorgulama dili özelliği vardır. • Bütün ORM araçlarına desteği vardır. • Java EE standartıdır. Java Persistence API - JPA Nedir?
  • 27. Java Persistence API - JPA Nedir? • JPA’nın çıkış amacı önceden mevcut olan diğer veri kalıcılığını sağlayan kütüphanelerin ORM araçlarından Hibernate, Toplink, JDO gibi... Ortak bir tanım altında birleştirmekti. Bugün JPA bunu da başarmıştır! • JPA’dan önce projelerde her kütüphane kendine özel API'sini kullanırdı ve birinden diğerine geçiş zordu. VERİ ERİŞİM KATMANI JPA • ORM ürünlerini JPA başlığı altında kullanırsak istediğiniz kütüphaneye kolayca geçiş yapabiliriz. • JPA bir persistence uygulaması değildir. JPA persistence uygulamalarını yöneten, bir spesifikasyondur.
  • 28. • Java Persistence API, nesnelerin ve ilişkilerinin veritabanında eşlemesini standartlaştırır. Java Persistence API - JPA Nedir? • JPA, ilişkisel verilerin (Relational Data), Java nesneleriyle nasıl ilişkilendirileceği üzerinde durur. • Java’daki bir ve birden çok nesnenin durumlarını ve veritabanındaki karşılıklarının tutarlı olarak varlıklarını devam ettirmesiyle JPA ilgilenir.
  • 29. Java Persistence API ile ORM • JPA, nesnelerin ilişkisel veri tabanında(Relational DataBase) haritalanıp erişilmesini bize sağlar.
  • 30. JPA spesifikasyonu ve implementasyonu • Hibernate, EclipseLink, gibi... ORM araçları ise birer JPA implementasyonudur. • JPA, enterprise Java ve ORM dünyasındaki gelişmelerin neticesinde ortaya çıkmış bir Persistence API’dir. • Spesifikasyon kağıt üzerinde uyulması gereken bir takım tanımlamalardan ve kurallardan ibarettir. JPA • JPA, ORM araçlarının hepsininin çalışmasını tek çatı altında toplayan bir spesifikasyondur. • Bir spesifikasyonu iskelete benzetebiliriz. • İmplementasyon ise spesifikasyonunun ete kemiğe bürünmüş halidir.
  • 31. JPA'nın Avantajları • Uygulamada JPA ile çalışmak kullandığınız ORM implementasyonlarıdan tamamen izole olmak demektir! • JPA, uygulamayı ORM üreticisinden bağımsız kılar.
  • 32. JPA'nın Avantajları • İmplementasyonlar, spesifikasyon ile uyumlu oludurlar ve kendilerine has özellikleri vardır. • Uygulamalarda veri erişim katmanında doğrudan ORM implementasyonlarından birisini kullanmak yerine, ORM işlemlerimizi doğrudan JPA ile gerçekleştirmenin daha çok artıları vardır.
  • 33. JPA'nın Avantajları • JPA veritabanları ile bağlantı kurarken kendisine hangi veritabanının driver(sürücü)'sünü gösterirseniz o veritabanı ile bağlantıya geçer.
  • 34. • JPA kendine ait bir sorgu dili JPQL kullandığı için veritabanlarına özel sorgu kelimelerinden bağımsızdır. Yani uygulamanın bilgilerini depolayan veritabanınızı istediğiniz an sorunsuzca değiştirebilirsiniz. • JPQL sorguları sayesinde uygulamın altında hangi veritabanı olursa olsun farketmez. Sorgularınızı bütün veritabanları sorunsuzca anlar ve algılar. • Uygulamada sadece JPA ile çalışmak kullandığınız ORM implementasyonlarıdan tamamen bağımsız izole olmaktır! JPA'nın Avantajları
  • 35. Java Application Architecture (Java Uygulama Mimarisi) Presentation Layer Gösterim Katmanı Business Layer İş Katmanı Persistence Layer Kalıcılık Katmanı
  • 36. Presentation Layer Gösterim Katmanı Business Layer İş Katmanı Persistence Layer Kalıcılık Katmanı JPA JMS EJB JSF JSP Java Application Architecture (Java Uygulama Mimarisi) • Uygumala içindeki Kalıcılığı Katmanı bizim için çok önemlidir. JPA ve ORM araçları bu katmanda vazife alırlar.
  • 37. Java Application Architecture (Java Uygulama Mimarisi) Presentation Layer Gösterim Katmanı Business Layer İş Katmanı Persistence Layer Kalıcılık Katmanı
  • 38. • JPA'nın bir Java standartı olduğunu asla unutmayalım. Hibernate onu implement eder. JPA eşittir Hibernate gibi düşünmek doğru değildir! JPA bütün ORM araçlarının üzerinde ince bir katmandır. Java Application Architecture (Java Uygulama Mimarisi) • Hibernate daha eski ve daha kapsamlıdır. JPA tasarlanırken bir çok yapısını Hibernate’ten örnek almıştır.
  • 39. JPA - Java Persistence API Architecture (Java Kalıcılık API Mimarisi) Query Interface JPQL Query Methods Persistence Objects (Kalıcılık Nesnesleri) Query API Sorgu Metotları Sorgulama Dili Sorgu Ara yüzü
  • 40. Entity (Varlık) Nedir? Nasıl Kullanılır? • Bir nesnenin entity olması için o nesnin sınıfın üzerinde @Entity dipnotunun olması yeterlidir. • Entity nesneleri veritabanına haritalandığı için bellekten silinse bile veritabanındaki karşılığı durur. • Inner class(iç sınıf)tan, bir interface(ara yüz)den, tipi enum olan bir değişkenden, erişim belirteci olarak final kullanan bir sınıftan veya da nesneden entity olmaz!
  • 41. Entity (Varlık) Nedir? Nasıl Kullanılır? • Entity olmak isteyen bir sınıfın public veya da protected erişim tipinde boş parametreli yapılandırıcısı olmalıdır. • Java’da nesneler ana bellekte yaşarlar. Entity’ler de bir Java nesnesidir. Java’da her şey nesnedir. • JPA’yı kullanarak ilişkisel veritabanına haritalanıp kalıcı hale getirilecek olan nesnelere Entity (Varlık) denir.
  • 42. • JPA tarafından veritabanına bir defa haritalan bir Java nesnesi artık Entity nesnesi olarak muamele görür ve JPA’nın emrinde yönetilmeye hazırdır! • Entity nesneleri ile nesne yönelimli programlama dünyasındaki veri soyutlama (data abstraction) çok biçimlilik (polymorphisim) kalıtım (inheritance) ilişkiler ve bağlantılar (association) gibi... Aklınıza gelebilecek tüm işleri ilişkisel veritabanlarına başarıyla aktarabiliriz. Entity (Varlık) Nedir? Nasıl Kullanılır?
  • 43. JPA Entity (Varlık) Mimarisi 1 2
  • 44. • Tablolarımız veritabanında oluşturulduktan sonra entity manager ile arama, ekleme, düzenleme ve silme gibi... Bütün işlemleri yönetebiliriz. EntityManager Nedir? Nasıl Kullanılır?
  • 45. Callbacks (Çağırılar) Listeners(Dinleyiciler) • Kalıcı hale getirilmiş olan nesnelerin yaşam döngülerini takip ederek kontrollerine izin verir.
  • 46. • Verilere paralel olarak yapılan erişimleri koltrol altında tutmak için bu mekanizmalardan yararlanabiliriz. Transaction ve Locking(Kilitleme) • JTA (Java Tranction API) sayesinde veri eşimlerine dair denetimleri kolayca sağlıyoruz.
  • 47. Metadata (Üstveri) • Metadata veriyi tanımlamaktır. Verinin nasıl kullanılacağını ve sistemlerin verileri nasıl yöneteceğini de metadata tarif eder. • Veri hakkındaki bilgiye metadata (üstveri) denir. • JPA bir sınıfı veritabanına dönüştürürken metadatalardan yararlanır. • Bu tabloda bazı alanlar var, her bir alanın boyu ve tipi bunun gibi özelliklerin hepsi metadata'dır.
  • 48. • Notasyonlar XML yapılandırma dosyasında yaptığımız ayarların daha pratik olarak Java kodunda yapılmasıdır. • Notasyonlar sayesinde Java uygulamalarında ayarları tutan XML dosyalarına olan ihtiyaç daha aza inmiştir! • Dipnotlar - Notasyonlar (Annotations) ile Entitiy’lerin meta veri özelliklerini Java kodunda belirlemeye yararlar. • Notasyonlar @ işareti ile başlar. Sınıfların, nesnelerin, değişkenlerin, metotların kısaca Java sınıflarındaki yer alan her şeyin hemen bir üst satırında kullanılarak işimizi oldukça kolaylaştırırlar. Dipnotlar - Notasyonlar (Annotations)
  • 49. Dipnotlar - Notasyonlar (Annotations) • Notasyonlar sayesinde veritabanına tablo olarak haritalanacak olan Java sınıfının içinde tabloya dair özellkilerini de belirtmiş oluyoruz!
  • 50. • Java sınıflarından veritabanındaki tablolardaki verileri JPA kullanarak sorgulamak için kullanılan sorgu dilidir. JPQL (Java Persistence Query Language) • SQL cümlelerini JPA teknolojisi JPQL dili ile kendisi oluşturur. • JPQL aslında babadan kalma SQL sorgu diline benzer tarzda aynı mantıkta çalışır ama SQL değildir! Sorgu söz dizimleri farklıdır.
  • 51. JPQL (Java Persistence Query Language) • Hibernate Query Language (HQL) adında Hibernate’in de kendine has bir sorgu dili vardır. HQL ile JPQL arasında da bazı küçük söz dizimi farkları vardır. • Babadan kalma SQL ile JPQL sorgu dilini aynı anda kullanabiliriz. • HQL ve JPQL sorgu dilini aynı anda kullanamayız!
  • 52. • Veritabanındaki her tablo için aynı isme sahip bir tane java sınıfı(Entity Class) vardır. Persistence Unit ve Entity Classes • Persistence unit, doğrudan veritabanı ile iletişim halinde olma zorunluluğumuzu ortadan kaldırır. • Persistance unit veritabanı ile uygulama arasında kurulan köprüdür.
  • 53. Persistenece.xml Ayar Dosyası • JPA ve veritabanıyla ilgili olarak yapılacak ayarları persistence.xml isimli bir dosyada yapılmaktadır.
  • 143. HQL - Etiketli Parametre Kullanımı
  • 144. HQL - Etiketli Parametre Kullanımı
  • 145. HQL - Etiketli Parametre Kullanımı
  • 146. HQL - Soru İşaretli Parametre Kullanımı
  • 147. HQL - Soru İşaretli Parametre Kullanımı
  • 148. HQL - Soru İşaretli Parametre Kullanımı
  • 157. Güzel gören, güzel düşünür. Güzel düşünen, hayatından lezzet alır. B.S.N. JPA ve Hibernate ile ORM seminerine katılıp beni sabırla dinlediğiniz için sizlere çok teşekkür ederim. Bilgisayar Mühendisi Mimar ASLAN www.udemy.com/u/mimaraslan mimaraslan@gmail.com