JPA中的事务是什么?如何配置和使用事务?

JPA中的事务用于确保数据操作的一致性和完整性。我们可以通过以下步骤配置和使用事务:

  1. 在persistence.xml中配置事务类型。可以选择JTA或RESOURCE_LOCAL。
<persistence-unit name="exampleUnit" transaction-type="JTA">  
  1. 从EntityManagerFactory获得EntityManager。
EntityManagerFactory emf = Persistence.createEntityManagerFactory("exampleUnit");  
EntityManager em = emf.createEntityManager();
  1. 开启事务。可以使用EntityTransaction的begin()方法。
EntityTransaction tx = em.getTransaction();  
tx.begin();  
  1. 进行增删改查操作。实体状态变更会同步到数据库。
User user = new User("John");  
em.persist(user);
  1. 提交或回滚事务。使用EntityTransaction的commit()或rollback()方法。
tx.commit();   // 提交
tx.rollback(); // 回滚
  1. 关闭EntityManager。释放资源。
em.close();

代码示例:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("exampleUnit");  
EntityManager em = emf.createEntityManager();

EntityTransaction tx = em.getTransaction();
tx.begin();  

User user = new User("John");  
em.persist(user);  

tx.commit();  

em.close();