Транзакции в спящем режиме - PullRequest
0 голосов
/ 07 января 2011

Я новичок в спящем режиме

В моем проекте мне нужно обрабатывать транзакции.Как обрабатывать декларативные транзакции в двух классах

Примеры:

//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 успешнои вставка в класс B завершается неудачно, тогда транзакция должна выполнить откат и удалить запись, вставленную в таблицу A, соответствующую классу A

.Спасибо в adavace ....

1 Ответ

6 голосов
/ 07 января 2011

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 (), все откатывается.

У вас могут возникнуть вопросы по обработке сеанса, но это другой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...