您可以通过调用 begin ()、commit () 和 rollback () 方法来注入 用户事务 和管理事务边界。
流程
注入 用户事务 接口:
src/main/java/org/acme/SantaClauseService.java
@ApplicationScoped
public class SantaClausService {
@Inject ChildDAO childDAO;
@Inject SantaClausDAO santaDAO;
@Inject UserTransaction transaction;
}
@ApplicationScoped
public class SantaClausService {
@Inject ChildDAO childDAO;
@Inject SantaClausDAO santaDAO;
@Inject UserTransaction transaction;
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
使用事务分离方法控制事务:
src/main/java/org/acme/SantaClauseService.java
import javax.transaction.Transactional;
import javax.inject.Inject;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;
@ApplicationScoped
public class SantaClausService {
@Inject ChildDAO childDAO;
@Inject SantaClausDAO santaDAO;
@Inject UserTransaction transaction;
public void getAGiftFromSanta(Child child, String giftDescription) {
// some transaction work
try {
transaction.begin();
Gift gift = childDAO.addToGiftList(child, giftDescription);
santaDAO.addToSantaTodoList(gift);
transaction.commit();
}
catch(SomeException e) {
// do something on Tx failure
transaction.rollback();
}
}
}
import javax.transaction.Transactional;
import javax.inject.Inject;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;
@ApplicationScoped
public class SantaClausService {
@Inject ChildDAO childDAO;
@Inject SantaClausDAO santaDAO;
@Inject UserTransaction transaction;
public void getAGiftFromSanta(Child child, String giftDescription) {
// some transaction work
try {
transaction.begin();
1
Gift gift = childDAO.addToGiftList(child, giftDescription);
santaDAO.addToSantaTodoList(gift);
transaction.commit();
}
catch(SomeException e) {
// do something on Tx failure
transaction.rollback();
2
}
}
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow