İşlemler ve toplu işleme

Java ile PostgreSQL Veritabanına Sorgu Yazma

Miller Trujillo

Staff Software Engineer

Sorun nedir?

  • İşlem: Veritabanı işlemleri için bir güvenlik ağı
  • Tüm işlemler birlikte başarılı olur veya başarısız olur

$$

$$

Banka transferi işlem örneği

Java ile PostgreSQL Veritabanına Sorgu Yazma

ACID özellikleri

  • Atomicity: işlemler tamamlanır veya hiçbiri uygulanmaz
  • Consistency: veritabanı geçerli kalır
  • Isolation: işlemlerin birbirini etkilemesini önler
  • Durability: tamamlanan işlemler kalıcı olarak saklanır

ACID özellikleri

  • Varsayılan olarak, JDBC otomatik onay modunda çalışır 🔄
Java ile PostgreSQL Veritabanına Sorgu Yazma

JDBC'de işlem kontrolü

Connection conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD)
conn.setAutoCommit(false);

try (...) { // SQL ifadelerinizi burada çalıştırın
conn.commit();
} catch (SQLException e) { conn.rollback(); }
Java ile PostgreSQL Veritabanına Sorgu Yazma

Banka transferi örneği

// Gönderenin bakiyesini azalt
String withdrawSQL = "UPDATE accounts SET balance = balance - ?
  WHERE account_id = ? AND balance >= ?";

// Alıcının bakiyesini artır String depositSQL = "UPDATE accounts SET balance = balance + ? WHERE account_id = ?";

$$

  • UPDATE - bir tablodaki mevcut satırları değiştirir
  • SET - hangi sütunların değişeceğini belirtir
Java ile PostgreSQL Veritabanına Sorgu Yazma

Banka transferi örneği

try (Connection conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD)) {

conn.setAutoCommit(false);
try { try (PreparedStatement withdrawStmt = conn.prepareStatement(withdrawSQL); PreparedStatement depositStmt = conn.prepareStatement(depositSQL)) { // Parametreleri ayarlayın ve her iki ifadeyi de çalıştırın... }
conn.commit();
} catch (SQLException e) { conn.rollback(); } }
Java ile PostgreSQL Veritabanına Sorgu Yazma

Toplu işleme

  • Birden fazla işlemi bir araya getirir

$$

Ekran Görüntüsü 2025-12-03 10.40.25.png

Java ile PostgreSQL Veritabanına Sorgu Yazma

Toplu işleme örneği

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO transfers
   (sender_id, recipient_id, amount) VALUES (?, ?, ?)")

for (Object[] transfer : transfers) { pstmt.setInt(1, (Integer) transfer[0]); pstmt.setInt(2, (Integer) transfer[1]); pstmt.setInt(3, (Integer) transfer[2]);
pstmt.addBatch(); // Daha sonra için sıraya al }
int[] results = pstmt.executeBatch(); // Hepsini bir kerede gönder
Java ile PostgreSQL Veritabanına Sorgu Yazma

Haydi pratik yapalım!

Java ile PostgreSQL Veritabanına Sorgu Yazma

Preparing Video For Download...