Я ищу в своей модели, использующей Hibernate. Кажется, я нахожу два подхода для этого.Spring Hibernate - разница между CrudRepository и SessionFactory
Первый из них использует 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
аннотацию , В чем разница?
Я не нашел ответа на вопрос «когда я должен использовать предыдущий или последний подход», так что я могу получить объяснение?
['SessionFactory'] (https://docs.jboss.org/hibernate/orm/5.0/javadocs/org/hibernate/SessionFactory.html), [' CrudRepository'] (http: //docs.spring. io/spring-data/commons/docs/current/api/org/springframework/data/repository/CrudRepository.html), ['@ Transactional'] (http://docs.spring.io/spring/docs/current/ javadoc-api/org/springframework/transaction/annotation/Transactional.html), ['@ Repository'] (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/stereotype/ Repository.html). –