viv*_*mar 9 hibernate spring-data-jpa
Spring data jpa 只包含 save 方法,不像 hibernate,我们有 save 和 update 方法。那么spring data jpa如何检查是否更新或保存当前对象。
Spring data JPA 保存新实体并更新旧实体。Spring data JPA 提供以下策略来检测实体是否是新的。
\n\n来自文档。
\n\n\n保存实体可以通过\nCrudRepository.save(\xe2\x80\xa6)方法执行。它将使用底层 JPA EntityManager 保留或合并给定的实体。如果实体尚未持久化,Spring Data JPA 将通过调用entityManager.persist(\xe2\x80\xa6) 方法来保存实体,否则\nentityManager.merge(\xe2\x80\xa6) 方法将被调用。
\n
spring data 自动检测应该创建或更新的内容。例如 SimpleJpaRepository 中的 save 方法的源代码(实现 CrudRepository),以防您的实体实现 Persistable
public <S extends T> S save(S entity) {
if (entityInformation.isNew(entity)) {
em.persist(entity);
return entity;
} else {
return em.merge(entity);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,需要检查如何处理实体,保存它或根据实体是否是新的进行更新 - 然后保存它。是新检查,只是检查 id 不为空
例如,如果一个实体实现 Persistable :
public boolean isNew() {
return null == getId();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6938 次 |
最近记录: |