gpt4 book ai didi

spring - Spring Entity Manager 和 Spring Data Repository 有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 13:46:33 29 4
gpt4 key购买 nike

我在网站中使用 JPA。在探索了保存数据的选项之后,我发现了 2 种方法。第一种方法是使用 javax.persistence.EntityManager 的实现。我使用 LocalContainerEntityManagerFactoryBean 来实例化 EntityManager 的一个实例。一旦我获得了一个 EntityManager 的实例,我就可以用它来保存一个实体。例如,

entityManager.merge(someEntity);

另一种选择是使用 org.springframework.data.repository.CrudRepository 的实例。一,我获得了一个 CrudRepository 的实例,我可以用它来保存一个实体。例如,

aCrudRepository.save(someEntity);

使用 EntityManager 和 CrudRepository 将实体持久保存到数据库有什么区别?这两种方法(实体管理器与 crud 存储库)的优缺点是什么?

最佳答案

在 Java/Spring 中有几个处理持久数据的层:

  • JDBC
  • Jdbc模板
  • JPA(包含 EntityManager)
  • Spring Data JPA(包含 Repository)

每个抽象都使开发人员免受较低级别的细节的影响,但它可以带来自己的复杂性。 JdbcTemplate 是对普通 JDBC 的精简抽象。Repository 是对 EntityManager 的抽象。它使开发人员免受EntityManager 引入的一些复杂细节,并添加了样板代码和许多方便的方法。

例如,CrudRepository 添加了 findAll() 的实现,这很常见,因此预定义它是有意义的。存储库有许多方便的方法,用于从方法名称(约定优于配置)、实体本身(按示例查询)生成查询。它们允许将漂亮的类型安全 Fluent API 与 Query DSL 一起使用,或者启用动态投影。

关于spring - Spring Entity Manager 和 Spring Data Repository 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14621495/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com