当前位置: 首页 > 知识库问答 >
问题:

在使用spring-data-jpa和hibernate作为jpa提供程序时的对象/实体生命周期?

范甫
2023-03-14

Hibernate将这些生命周期定义为实体--瞬态、持久、分离、删除。在使用spring-data-jpa时,这些相同的生命周期是否也适用。如果是这样,下面Hibernate提供的方法如何与spring jpa crud存储库的方法进行映射。

//below methods in hibernate move an entity to persistent state
save(e), 
persist(e);  
update(e);  
saveOrUpdate(e);  
lock(e);  
merge(e);  

//below methods in hibernate move an entity to detached state
detach(e);  
evict(e);  

共有1个答案

司徒焕
2023-03-14

关于问题的第一部分:

Spring Data JPA只是在JPA之上提供了一些舒适的机制。持久化、映射和生命周期仍然由JPA或其实现(在您的情况下是Hibernate)管理。这意味着生命周期是相同的。

至于Spring Data、JPAs方法和Hibernates/JPA方法之间的映射,请参见下表。

 类似资料:
  • Spring Data JPA不是一个JPA实现,它是对数据库数据访问的抽象。我不能理解这种表达方式与JPA的实现(比如Hibernate)进行比较。在使用Spring Data JPA时,要使用CRUD操作,必须从CrudRepository接口进行扩展。但是没有Hibernate,Spring Data JPA无法独立工作,因为它无法将java对象转换为实体。但是!Hibernate还可以执行

  • 假设我有两个实体: 是否可以这样做: 即:接受一个实体(本例中为< code>Address)作为参数,但在原生查询中引用它的一个属性(本例中为< code>Address.street? 由于各种原因,我不能对这两个实体使用“正常”和JPA查询。

  • 问题内容: 我试图通过遵循Hibernate EntityManager 文档中的信息来建立一个简单的jpa 2.0项目。我已经花了几个小时了,但是无论我做什么,当我尝试创建EntityManagerFactory时总是会遇到此异常: 关于此异常,我发现了很多类似的问题,但是没有能够解决的解决方案。我在这里做错了什么? 目录结构 我的 persistence.xml 我的 pom.xml User

  • 在其中一个服务中,我们执行一些操作: 更新表A-使用带注释的查询调用方法,来自存储库的方法,扩展了JParePository。 从表B中选择(repository.findone(B_PK)) 修改从点2检索的对象 将修改的对象另存为新实体(repository.save(B_Object))

  • 我正在使用Spring Data JPA和Hibernate开发一个应用程序,并尝试使用EHCache启用二级缓存。我将我的应用程序分成两个项目: CoreDataFacade:在这里,我使用QueryDSL、Spring data JPA和Hibernate以及Ehcache定义了数据访问操作。 QueryComponent:是使用CoreDataFacade项目访问数据的spring启动项目。

  • 我的< code > application context . XML 是: 每个实体都有和设置以下属性 标记在< code>persistence.xml中显式指定每个实体?