Spring实体管理器和Spring数据存储库之间的区别是什么?
我在一个网站上使用JPA。在探索了保存数据的选项之后,我找到了两种方法。第一种方法是使用javax.persistence.EntityManager的实现。我使用LocalContainerEntityManagerFactoryBean来实例化EntityManager的一个实例。一旦获得EntityManager的实例,我就可以使用它来保存实体。比如说,Spring实体管理器和Spring数据存储库之间的区别是什么?,spring,jpa,spring-data,spring-data-jpa,Spring,Jpa,Spring Data,Spring Data Jpa,我在一个网站上使用JPA。在探索了保存数据的选项之后,我找到了两种方法。第一种方法是使用javax.persistence.EntityManager的实现。我使用LocalContainerEntityManagerFactoryBean来实例化EntityManager的一个实例。一旦获得EntityManager的实例,我就可以使用它来保存实体。比如说, entityManager.merge(someEntity); aCrudRepository.save(someEntity);
entityManager.merge(someEntity);
aCrudRepository.save(someEntity);
另一个选项是使用org.springframework.data.repository.crudepository的实例。首先,我获得了一个crudepository的实例,我可以用它来保存一个实体。比如说,
entityManager.merge(someEntity);
aCrudRepository.save(someEntity);
使用EntityManager和Crudepository将实体持久化到数据库中有什么区别?这两种方法(实体管理器与crud存储库)的优缺点是什么?这两种接口提供了两种不同的方法:
是提供CRUD操作的存储库的通用接口org.springframework.data.repository.crudepository
与持久性关联 上下文Spring有自己的接口,扩展了javax.persistence.EntityManager
为此目的而呼吁crudepository
我希望您了解持久化API的优点或缺点。如果您不知道,您可以阅读的答案。在Java/Spring中有几个处理持久数据的层:
- JDBC
- jdbc模板
- JPA(包含
)EntityManager
- Spring数据JPA(包含
存储库
)
Repository
是对EntityManager
的抽象。它保护开发人员免受攻击
通过EntityManager
引入的一些复杂细节,并添加了样板代码和许多方便的方法
例如,
crudepository
添加了findAll()
的实现,这种实现非常常见,因此可以对其进行预定义。存储库有许多方便的方法从方法名称(约定优于配置)和实体本身(通过示例查询)生成查询。它们允许在查询DSL中使用漂亮的typesafe Fluent API,或者启用动态投影。谢谢。根据这个答案,我认为使用实体管理器保存实体和使用存储库保存实体没有区别。因此,如果您使用的是例如CRUDEPository,那么您实际上不需要EntityManager