如何从 Spring JPA 存储库创建分离插入和更新功能的自定义方法?假设创建插入方法和更新更新方法。
额外问题: 为什么 Spring JPA Repository 没有在设计上分离这些方法?
我当前的实现是在服务层创建验证。
我的存储库
public interface UserRepository extends CrudRepository<User, Integer> {}
我的服务
@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);
}
}
}
最佳答案
可以为标准 Spring 数据存储库提供您自己的扩展:
向所有存储库添加自定义行为:
例如,您可以实现锁定功能
void lock(T entity, LockModeType lockModeType);
但就你的情况而言,我建议不要进行检查,因为 SpringDataRepository 已经检查了它是否是新的。如果有 ID,它无论如何都会存在,因为您希望不要创建自己的 ID。这是 Spring 数据契约的一部分:
SimpleJpaRepository:
@Transactional
public <S extends T> S save(S entity) {
if (entityInformation.isNew(entity)) {
em.persist(entity);
return entity;
} else {
return em.merge(entity);
}
}
关于java - Spring JPA Repository - 单独的插入和更新方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42199795/