Java ile veritabanı: JDBC ve JPA
JDBC ile güvenli sorgular yazar, işlemleri ve bağlantı havuzunu yönetir, JPA ile nesneleri tablolara eşlerken performans ve güvenlik tuzaklarından kaçınırsın.
Seviye 301 · 17 ders · 15 pratik lab
Dersler
JDBC
- JDBC ile SQLite ve H2’ye bağlanmak
- PreparedStatement ve SQL enjeksiyonundan korunma
- ResultSet’i nesnelere eşlemek
- İşlemler, commit ve rollback
- Toplu ekleme ve performans
- Kısa görev: rehber için güvenli veri erişim sınıfı
İşletim
- HikariCP ile bağlantı havuzu
- Şema geçişleri ve sürüm tablosu
- Veritabanı parolasını koddan çıkarmak
- Yalıtım düzeyleri ve eşzamanlı güncelleme
- Kısa görev: havuz tükenmesini teşhis et ve düzelt
JPA
- JPA varlıkları ve Hibernate ile eşleme
- İlişkiler, tembel yükleme ve N+1 sorunu
- JPQL, Criteria ve güvenli parametreler
- İyimser kilitleme ve sürüm alanı
- Kısa görev: yavaş sayfanın N+1 sorgularını gider
Bitirme
- Bitirme görevi: işlem güvenli kütüphane ödünç sistemi
Pratik lablar
- Kişi aramasını PreparedStatement ile yazmak: Dizgi birleştirerek kurulan arama sorgusunu PreparedStatement'a çevir ve tırnak içeren adların düzgün arandığını test et.
- ResultSet'i nesnelere eşlemek: Satırları record nesnelerine çeviren eşleyiciyi yaz; null sütunları Optional ile, tarihleri LocalDate ile doğru ele al ve kaynakları kapat.
- Dinamik süzgeçli güvenli veri erişim sınıfı: İsteğe bağlı süzgeç ve sıralama alan veri erişim sınıfını yaz; değerler parametreyle, sütun adları izin listesinden gelsin ve enjeksiyon denemesi testlerini geç.
- Sipariş kaydını işlem içinde yapmak: Sipariş ve kalemlerini tek işlemde kaydet; kalemlerden biri başarısız olursa hiçbir satırın kalmadığını test et.
- Toplu eklemeyi batch ile hızlandırmak: Satır satır ekleyen içe aktarıcıyı addBatch ve tek işlemle yeniden yaz; yüz bin satırda süre hedefini tuttur.
- Eşzamanlı güncellemede kaybolan değişikliği önlemek: İki işlemin aynı stoğu okuyup yazdığı kodda kaybolan güncellemeyi yalıtım düzeyi ya da koşullu güncellemeyle önle; yüz eşzamanlı düşümde stok doğru kalmalı.
- Veritabanı parolasını koddan çıkarmak: Koda gömülü bağlantı bilgisini ortam değişkenlerinden oku ve eksik değerde açılışta anlaşılır hatayla dur.
- Şema göçlerini sürüm tablosuyla çalıştırmak: Numaralı göç dosyalarını sırayla ve işlem içinde uygulayan çalıştırıcıyı tamamla; uygulananı yeniden çalıştırma ve bozuk göçte geri al.
- Havuz tükenmesini teşhis edip gidermek: Yük altında bağlantı bekleyerek zaman aşımına düşen hizmette HikariCP sızıntı algılamasıyla kapatılmayan bağlantıyı bul, düzelt ve havuz boyutunu ölçerek ayarla.
- Kitap için JPA varlığı tanımlamak: Kitap tablosu için kimlik, benzersiz ISBN ve zorunlu alan kısıtlarını içeren JPA varlığını yaz ve kaydedip geri okuyan testi geç.
- JPQL sorgusunu adlandırılmış parametrelerle yazmak: Dizgi birleştirerek kurulan JPQL aramasını adlandırılmış parametrelere çevir ve Criteria ile isteğe bağlı süzgeçli sürümünü yaz.
- İyimser kilitlemeyle çakışan güncellemeyi yakalamak: Varlığa sürüm alanı ekle; iki oturumun aynı kaydı güncellediği testte ikincinin hata aldığını ve servisin yeniden deneyerek doğru sonuca ulaştığını göster.
- Oturum dışı tembel yükleme hatasını gidermek: Oturum kapandıktan sonra ilişkiye erişince hata veren kodu gereken veriyi işlem içinde yükleyerek düzelt.
- Ödünç listesindeki N+1 sorgusunu kaldırmak: Saklıvadi Üniversitesi kütüphanesinin ödünç listesinde her satır için ayrı sorgu atan sayfayı join fetch ile düzelt ve sorgu sayısını testle doğrula.
- Yavaş sayfayı izdüşüm ve sayfalamayla hızlandırmak: Tüm varlıkları belleğe çekip kodda süzen raporu veritabanında süzen, yalnızca gereken sütunları alan ve sayfalayan sorguya çevir; sorgu ve süre hedeflerini tuttur.
Kurs hakkında
JDBC ile güvenli sorgular yazar, işlemleri ve bağlantı havuzunu yönetir, JPA ile nesneleri tablolara eşlerken performans ve güvenlik tuzaklarından kaçınırsın.
Ne öğreneceksin
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.