一尘不染

Spring Hibernate-CrudRepository和SessionFactory之间的区别

hibernate

我正在考虑使用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注释。有什么区别?

我没有找到“何时/应该使用前一种或后一种方法”的答案,因此我可以得到解释吗?


阅读 222

收藏
2020-06-20

共1个答案

一尘不染

只是您可以在Spring docs网站上找到这些注释的描述。

很快,要回答您的问题,它们之间的区别是它们用于不同的目的。

  • @Transactional用于划分事务中涉及的代码。它放在类和方法上。

  • @Repository 用于定义支持事务的Spring bean,也可以在DI中使用。

它们可以在同一类上使用。

2020-06-20