java 如何提交事务
提交事务的方法
在Java中,提交事务通常依赖于数据库连接或框架提供的事务管理机制。以下是几种常见的方法:

使用JDBC原生API提交事务
通过java.sql.Connection对象可以手动控制事务的提交和回滚。

Connection connection = DriverManager.getConnection(url, username, password);
try {
connection.setAutoCommit(false); // 关闭自动提交
Statement statement = connection.createStatement();
statement.executeUpdate("INSERT INTO table_name VALUES (value1, value2)");
connection.commit(); // 提交事务
} catch (SQLException e) {
connection.rollback(); // 发生异常时回滚
} finally {
connection.setAutoCommit(true); // 恢复自动提交
connection.close();
}
使用Spring框架的声明式事务
通过@Transactional注解可以简化事务管理,Spring会自动处理提交和回滚。
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Transactional
public void saveUser(User user) {
userRepository.save(user);
}
}
使用JPA/Hibernate提交事务
通过EntityManager或Session对象可以手动控制事务。
EntityManager entityManager = entityManagerFactory.createEntityManager();
EntityTransaction transaction = entityManager.getTransaction();
try {
transaction.begin();
entityManager.persist(newEntity);
transaction.commit();
} catch (Exception e) {
transaction.rollback();
} finally {
entityManager.close();
}
事务提交的注意事项
- 确保在事务提交前所有数据库操作都已完成。
- 异常处理是关键,任何未捕获的异常都可能导致事务回滚。
- 在Spring中,默认情况下运行时异常会触发回滚,而检查型异常不会。
- 避免长时间运行的事务,这会占用数据库资源。






