存储库是在DB上保存实体数据的唯一方法吗?

时间:2019-05-16 15:29:10

标签: spring hibernate spring-boot jpa spring-data-jpa

我正在研究Spring Boot,并且已经创建了多个实体,现在的问题是从控制器检索数据以将其保存在db中。

在网上冲浪时,我了解到我必须以这种方式使用JPARepositeryCrudRepositery

有关用户实体的示例

public interface UserRepository extends CrudRepository<User, Integer> {

}

并保存

User user = new User();
userRepository.save(user);

但是,如果我有很多实体,是否需要为每个实体创建一个存储库?

我已经阅读了有关Session,FactorySession和Transaction的信息,它们与Spring Boot兼容吗?怎么运行的?和@Transactional标记其工作原理?

预先感谢

1 个答案:

答案 0 :(得分:0)

是的,通常您需要为每个Repository创建一个Entity。这也是一个好习惯,因为您将与同一Entity相关的操作和查询放在同一Repository中。

是的,您可以获得一个Session和一个FactorySession对象(Hibernate),但是我建议您不要直接使用Hibernate。相反,最好使用Spring Data或JPA机制来访问数据库(就像使用Repository一样)。原因是因为Hibernate是JPA标准的实现,并且今天我们使用JPA访问数据库(因为它掩盖了ORM的确切实现)。这样,您以后就可以(可能)用另一个JPA实现(例如EclipseLink)替换Hibernate,而无需更改代码(理论上)。但是,在大多数项目中,您会发现正在使用Hibernate。

是的,Transaction也是Spring注释,也是Spring Boot中重要的数据库事务处理机制。