Yos*_*nar 5 java spring spring-data-jpa
如何从 Spring JPA Repository 创建自定义方法来分离插入和更新功能?假设insert的create 方法和update 的 update 方法。
额外的问题: 为什么 Spring JPA Repository 没有按设计将这些方法分开?
我当前的实现是在服务层创建验证。
我的仓库
public interface UserRepository extends CrudRepository<User, Integer> {}
Run Code Online (Sandbox Code Playgroud)
我的服务
@Service
public class UserService {
public void addUser(User user) {
if (!userRepository.exists(user.getId())) {
userRepository.save(user);
}
}
public void updateUser(int id, User user) {
if (userRepository.exists(user.getId())) {
userRepository.save(user);
}
}
}
Run Code Online (Sandbox Code Playgroud)
可以为标准 Spring 数据存储库提供您自己的扩展:
将自定义行为添加到所有存储库:
例如,您可以实现锁定功能
void lock(T entity, LockModeType lockModeType);
Run Code Online (Sandbox Code Playgroud)
但就你而言,我建议不要进行检查,因为 SpringDataRepository 已经检查了它是否是新的。如果有 ID,它无论如何都会存在,因为您希望不要创建自己的 ID。这是 Spring 数据契约的一部分:
SimpleJpa存储库:
@Transactional
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)
| 归档时间: |
|
| 查看次数: |
9242 次 |
| 最近记录: |