Java Tutorial/EJB3/Transaction

Материал из Java эксперт
Перейти к: навигация, поиск

Bean Managed Transaction

File: EmployeeBean.java



   <source lang="java">

import javax.annotation.Resource; import javax.ejb.EJBException; import javax.ejb.Stateless; import javax.ejb.TransactionManagement; import javax.ejb.TransactionManagementType; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.transaction.UserTransaction; @Stateless @TransactionManagement(TransactionManagementType.BEAN) public class EmployeeBean implements EmployeeServiceLocal, EmployeeServiceRemote {

 @PersistenceContext(unitName = "EmployeeService")
 private EntityManager manager;
 @Resource UserTransaction tx;
 public void doAction() {
   try {
     try {
         tx.begin();
         // do the work...
         System.out.println("Processing...");
     } finally {
         tx.rumit();
     }
 } catch (Exception e) {
     // handle all the tx.begin()/commit() exceptions
     throw new EJBException(e);
 }
 }

}</source>





Container Managed Transaction Attribute Type: REQUIRED

File: EmployeeBean.java



   <source lang="java">

import javax.ejb.Stateless; import javax.ejb.TransactionAttribute; import javax.ejb.TransactionAttributeType; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @Stateless public class EmployeeBean implements EmployeeServiceLocal, EmployeeServiceRemote {

 @PersistenceContext(unitName = "EmployeeService")
 private EntityManager manager;
 @TransactionAttribute(TransactionAttributeType.REQUIRED)
 public void doAction() {
   Customer cust = new Customer();
   cust.setFirstName("Joe");
   manager.persist(cust);
   
   System.out.println("Saved");
   
   cust = manager.find(Customer.class,cust.getSsn());
   
   System.out.println(cust.getFirstName());
   cust.setFirstName("new Name");
   
   manager.merge(cust);
   cust = manager.find(Customer.class,cust.getSsn());
   
   System.out.println(cust.getFirstName());
 }

}</source>





Transaction Attribute Type: REQUIRES_NEW

File: Customer.java



   <source lang="java">

import javax.persistence.Entity; import javax.persistence.EntityListeners; import javax.persistence.Id; import javax.persistence.PostRemove; @Entity public class Customer implements java.io.Serializable {

 private String firstName;
 private String lastName;
 @Id
 private long ssn;
 public String getFirstName() {
   return firstName;
 }
 public void setFirstName(String firstName) {
   this.firstName = firstName;
 }
 public String getLastName() {
   return lastName;
 }
 public void setLastName(String lastName) {
   this.lastName = lastName;
 }
 public long getSsn() {
   return ssn;
 }
 public void setSsn(long ssn) {
   this.ssn = ssn;
 }

}</source>