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