4. JDBC
Teknolojisi
Driver
Tipleri
CLIENT
Type
1
ODBC
ODBC
Bridge
Driver
Type
2
Na@ve
API
Na@ve
API
Database
Type
3
Middleware
JDBC-‐Network
Server
Type
4
100%
Java
Java
for
Telco
C1
4
5. JDBC
Teknolojisi
7
Temel
Adım
1. Driver’ı
yükle
2. BağlanT
adresini
belirle
3. BağlanT
kur
4. Statement
oluştur
5. Sorguyu
çalışTr
6. Sonuçları
işle
7. BağlanTyı
kapat
Java
for
Telco
C1
5
6. JDBC
Teknolojisi
7
Temel
Adım
:
(1)
Driver’ın
yüklenmesi
Class.forName(driverName);
• “com.mysql.jdbc.Driver”
• “oracle.jdbc.driver.OracleDriver“
• “org.postgresql.Driver”
Jdbc
4.0
ile
birlikte
(J2SE
6.0)
“Class.forName“
çağırmaya
gerek
kalmıyor.
Java
for
Telco
C1
6
7. JDBC
Teknolojisi
7
Temel
Adım
:
(2)
BağlanT
adresinin
belirlenmesi
Mysql
jdbc:myqsl://<HOST>:<PORT>/<DATABASE_NAME>!
jdbc:mysql://localhost/testdb!
!
!
Oracle
jdbc:oracle:thin@<HOST>:<PORT>:<DATABASE_NAME>!
jdbc:oracle:thin:@172.28.106.178:1522:testdb!
!
jdbc:oracle:oci:@<DATABASE_NAME> è Type 2 driver!
Java
for
Telco
C1
7
8. JDBC
Teknolojisi
7
Temel
Adım
:
(3)
BağlanT
kur
String
url
=
"jdbc:mysql://localhost/testdb";
String
username
=
”ilkin";
String
password
=
”12345";
Connec@on
connec@on
=
DriverManager.getConnec-on(
url,
username,
password);!
Java
for
Telco
C1
8
9. JDBC
Teknolojisi
7
Temel
Adım
:
(4)
Statement
oluştur
• Statement
!connection.createStatement();!
• PreparedStatement
connection.prepareStatement(sql);!
• CallableStatement
connection.prepareCall(sql)!
Java
for
Telco
C1
9
11. JDBC
Teknolojisi
7
Temel
Adım
:
(6)
Sonuçları
işle
PreparedStatement ps =
!connection.prepareStatement(query);!
!
ResultSet rs = ps.executeQuery();!
!
while (rs.next()) {!
!… rs.getString(1) …!
!… rs.getInt(2) …!
!… rs.getTimestamp(3) …!
}!
Java
for
Telco
C1
11
12. JDBC
Teknolojisi
7
Temel
Adım
:
(7)
BağlanTyı
kapat
resultSet.close();!
preparedStatement.close();!
connection.close();!
!
• Senkron
çalışır
• Database
ve
JDBC
kaynakları
temizlenir.
(Socket
kapaTlır)
• Daha
önceden
kapaTlmış
bir
connec@on’ın
“close”
metodunun
çağırılması
birşey
yapmaz.
(no-‐op)
Java
for
Telco
C1
12
13. İleri
Seviye
Teknikler
• Spring
JDBC
• Transac@ons
• Performans
op@mizasyonları
• Connec@on
pools
• Batch
işlemler
• Fetch
Size
• Query
Timeout
• Unit
Tests
(
In
Memory
Databases
)
Java
for
Telco
C1
13
14. İleri
Seviye
Teknikler
Spring
JDBC
İşlem
Spring
Sen
BağlanT
parametrelerinin
belirlenmesi
X
BağlanTnın
kurulması
X
SQL
cümlelerinin
belirlenmesi
X
SQL
parametrelerinin/@plerinin
belirlenmesi
X
SQL
cümlesinin
hazırlanması
ve
işle@lmesi
X
Sonuçları
gezmek
için
döngü
hazırlanması
X
Her
iterasyon
için
sonucun
işlenmesi
X
Excep@on’ların
işlenmesi
X
Transac@on’ların
yöne@lmesi
X
Connec@on,
Statement
ve
ResultSet’in
kapaTlmasi
X
Java
for
Telco
C1
14
16. İleri
Seviye
Teknikler
Performans
OpQmizasyonları
:
Connec@on
Pools
• DB
Connec@on
açmak
ve
kapatmat
maliyetli
• Connec@on
pool
içinde
hazır,
kullanılmayı
bekleyen
connec@on’lar
bulunur.
• Ortak
parametreler:
• Max
Connec@ons
• Min
Connec@ons
• Test
query
• Uygun
Connec@on
bekleme
süresi
• Bir
çok
open-‐source
connec@on
pool
var.
• DBCP
(hqp://commons.apache.org/dbcp/)
• BoneCP
(hqp://jolbox.com/)
• C3P0
(hqp://sourceforge.net/projects/c3p0)
Java
for
Telco
C1
16
17. İleri
Seviye
Teknikler
Performans
OpQmizasyonları
:
Batch
İşlemler
Tanım
:
Benzer
sorguların
gruplanması
ve
tek
seferde
DB’ye
gönderilmesi
Avantajları:
• Uygulama
ve
Database
arasındaki
network
trafiğini
azalTr
• Database
commit
(IOPS)
sayısını
azalTr.
Java
for
Telco
C1
17
18. İleri
Seviye
Teknikler
Performans
OpQmizasyonları
resultSet.setFetchSize(100) *!
“select
*
from
test_table”
Applica@on
Database
saTrlar
saTrlar
saTrlar
saTrlar
*
Fetch
Size’ın
Varsayılan
değeri
10’dur.
Java
for
Telco
C1
18
19. İleri
Seviye
Teknikler
Performans
OpQmizasyonları
preparedStatement.setQueryTimeout(5) *!
“select
*
from
test_table”
Database’
den
cevap
Applica@on
5
saniye
Database
içinde
gelmez
ise
SQLExcep@on
*
Query
Timeout
birimi
saniyedir.
Varsayılan
değeri
sonsuzdur.
Java
for
Telco
C1
19