我正在研究使用Hibernate持久化我的模型。我似乎找到了两种方法来做到这一点。
第一个使用SessionFactory
,例如:
public Collection loadProductsByCategory(String category) {
return this.sessionFactory.getCurrentSession()
.createQuery("from test.Product product where product.category=?")
.setParameter(0, category)
.list();
}
另一个使用扩展CrudRepository
的注释子类/接口:
@Transactional
public interface UserDao extends CrudRepository<User, Long> {
public User findByEmail(String email);
}
有时我会看到@Transactional
注释而不是@Repository
。那有什么区别?
我没有找到“何时/应该使用前者或后者的方法”的答案,所以我能得到解释吗?
答案 0 :(得分:3)
仅您可以在Spring docs网站上找到这些注释的说明。
很快,为了回答您的问题,它们之间的区别在于它们用于不同的目的。
@Transactional
用于划分涉及事务的代码。它放在课程和方法上。
@Repository
用于定义支持事务的Spring bean,也可以在DI中使用。
它们可以在同一个类中使用。