【问题标题】:Is Repository the only way to save entity data on DB?存储库是在数据库中保存实体数据的唯一方法吗?
【发布时间】:2019-10-03 22:25:11
【问题描述】:

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

网上冲浪我了解到我必须这样使用JPARepositeryCrudRepositery

用户实体示例

public interface UserRepository extends CrudRepository<User, Integer> {

}

并保存

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

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

我已经阅读了关于 Session、FactorySession 和 Transaction 它们与 Spring boot 兼容的信息?这个怎么运作?和@Transactional 标记它是如何工作的?

提前致谢

【问题讨论】:

  • 可以注入@PersistenceContext EntityManager entityManager 并通过它进行数据访问。

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    相关资源
    最近更新 更多