Декларативная транзакция: вы помещаете декларативную транзакцию в декларацию метода. поэтому вам не нужно реализовывать транзакцию вручную. Вот вам пример:
// declarative
@Transcational
public void Transfer (Account from, Account destination, double amount) {
//do your logic here
}
// programmatic
public void Transfer (Account from, Account destination, double amount) {
var session = sessionFactory.openSession();
var tx = session.BeginTransaction();
try {
//do you logic here
tx.Commit();
} catch {
tx.Rolback();
}
}