【发布时间】:2019-06-16 23:42:48
【问题描述】:
我正在学习如何使用 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 有什么用?
【问题讨论】:
-
这与 JPA ... FWIW 无关。那是春天
标签: java hibernate spring-boot jpa