簡體   English   中英

休眠狀態下的交易

[英]Transactions in hibernate

我剛冬眠

在我的項目中,我需要處理交易。 如何使用兩類處理聲明式事務

例子:

//class 1
class A{

  createA()
  {
    insert(A);
  }
}

//class 2
class B
{
  createB()
  {
    insert(B);
  }
}

//class 3
@Transaction(Exception.class)

class C
{

  test()
  {

    create(A);

    create(B);

  }
}

按照上面的代碼,有可能以以下方式處理事務:如果在classA中的插入成功而在classB中的插入失敗,則事務應回滾並刪除與類A相對應的表A中插入的記錄

請使用聲明式事務來幫助我。...

感謝adavace ...

像其他任何事物一樣,Hibernate支持事務。 因此,您只需要在事務中包裝對update()和save()的調用即可。

例:

Session sess = factory.openSession();
Transaction tx = null;
try {
    tx = sess.beginTransaction();

    // your updates to the database
    create(A);
    create(B);


    tx.commit();
}
catch (RuntimeException e) {
    if (tx != null) tx.rollback();
    throw e; // or display error message
}
finally {
    sess.close();
}

而您如願以償。 如果beginTransaction()和commit()之間的任何操作失敗,則所有操作都會回滾。

您可能對會話處理有疑問,但這是另一個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM