17 Şubat 2013 Pazar

Jdbc Transaction

Javada Transaction

Javada transaction bir işlemi yapar iken veya kaydı database e atarken paralel veya bağımlı bağımlı olan ve ayrılmaması gereken yapılar için tasarlanmıştır.Kısaca bir db connection gerçekleşmeyen bağımlı bir connection dan ötürü durdurulur yada en doğrusu kontrol edilir.
Tranasction terimleri 3 tanedir
1.begin : İşlemi sorguyu default olarak başlatır.
2.commit : İşlemi işletir kullanılmak üzere hafızaya alır
3.rollback : Geri sarar

Transaction da commit kullanımı örneğini aşağıdaki örnekle açıklamaya çalışalım


  1.   public class transactionTest {

  2. public static void main(String[] args) throws ClassNotFoundException,
  3. SQLException {
  4. Class.forName("com.mysql.jdbc.Driver");

  5. Connection connection = DriverManager.getConnection(
  6. "jdbc:mysql://localhost:3306/my_db2", "root", "godoro");
  7. connection.setAutoCommit(false);
  8. String sql = "insert into  customer(customerName,totalDebit) values(?,?)";

  9. PreparedStatement statement = connection.prepareStatement(sql);
  10. statement.setString(1, "Adnan Oktar");
  11. statement.setDouble(2, 7200);
  12. statement.executeUpdate();
  13. burdakı versıyonda sql ı bozdugumuz szamna hıcbırını yazmaz a
  14. PreparedStatement statement1 = connection.prepareStatement(sql);
  15. statement1.setString(1, "Ahmet Mahmut Ünlü");
  16. statement1.setDouble(2, 3900);
  17. statement1.executeUpdate();
  18. PreparedStatement statement2 = connection.prepareStatement(sql);
  19. statement2.setString(1, "Fethullah Gülen");
  20. statement2.setDouble(2, 7800);
  21. statement2.executeUpdate();
  22. connection.commit();
  23. connection.close();

  24. }
  25. Bu ornekte gördüğünüz üzere 9.satırdaki kırmızı ıle işaretli kod bloğu ile connection hafızaya yazılmış yani işletilmiş 29.satıra gelince yani işlem hatasız tamamlanıncada database e set işlemi gerçekleştirilmiştir.
Bunun aksi  durumda ise denendiği zaman işlemi kesip attığını göreceksiniz.
Örnek
PreparedStatement statement1 = connection.prepareStatement(sql+blabla);
şeklinde hata vericek sonuclu bir kod blogu oldugunda işlemi tamamlamayıp yarım bıraktıgına şahit olabilirsiniz.
Bozulan veya hatalı bir kod bloğunun kullanımı bu şekildedir.Bu sıralı bağımlı işlemlerde tasarımcıların işine yarayabildiği gibi hata verene,okunana  kadar devam edilmesi istenen kod bloklarında da kod tasarımcılarının işine yrayabilir şöyleki;
Oluşturulan her işlem bloğundan sonra connection commit edilirse hata verene kadar uygulama çalıştırılabilir.
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, "Adnan Oktar");
statement.setDouble(2, 7200);
statement.executeUpdate();
connection.commit();
şeklinde.


Hiç yorum yok:

Yorum Gönder