Spring Hibernate - CrudRepository和SessionFactory的区别

4

我正在研究使用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注解的情况。它们之间有什么区别呢?

我还没有找到“我应该在什么时候使用前者或后者”的答案,所以可以给我解释一下吗?


1
SessionFactoryCrudRepository@Transactional@Repository - Dragan Bozanovic
1个回答

2
仅仅在Spring文档网站上可以找到这些注释的描述。
简而言之,回答您的问题,它们之间的区别是它们用于不同的目的。
- @Transactional 用于标识涉及事务的代码。它放置在类和方法上。 - @Repository 用于定义支持事务的Spring bean,它也可以用于依赖注入。
它们可以在同一个类上同时使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接