@Transactional与JPA和Hibernate有什么用?
2022-09-01 21:30:24
我正在学习如何使用JPA和Hibernate以及MySQL数据库创建REST API,我看到这个@Transactional注释。有人可以解释一下这个注释有什么用吗?
例如,我有这个简单的DAO类:
@Repository
public class EmployeeDAOHibernateImpl implements EmployeeDAO {
// define field for entitymanager
private EntityManager entityManager;
// set up constructor injection
@Autowired
public EmployeeDAOHibernateImpl(EntityManager entityManager) {
this.entityManager = entityManager;
}
@Override
@Transactional
public List<Employee> findAll() {
// get the current hibernate session
Session currentSession = entityManager.unwrap(Session.class);
// create a query
Query<Employee> theQuery =
currentSession.createQuery("from Employee", Employee.class);
// execute query and get result list
List<Employee> employees = theQuery.getResultList();
// return the results
return employees;
}
}
您可以看到用于findAll()方法的@Transactional,但是如果我删除此@Transactional,我将得到相同的输出...那么这个@Transactional有什么用呢?