我在网站中使用 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/