Каков наилучший способ сделать вставку с JpaRepository и проверить, была ли она успешной? - PullRequest
0 голосов
/ 09 июня 2019

Я работаю с JPA весной и мне нужно выполнить вставки пользователей.Первичный ключ пользователя таблицы - это имя пользователя.

Каков наилучший способ сделать эту вставку и быть уверенным, что у вставленного пользователя есть действительное имя пользователя?

На мой взгляд, есть два возможныхспособы:

  1. Проверка с помощью jpaRepository.exists (id), есть ли у пользователя имя пользователя, которое уже было сохранено.
  2. Выполнение вставки в репозиторий JPA, которая выдает исключение или дает любой знак, есливставка не была завершена.

Мне кажется, что первый вариант приведет к ненужным операторам SQL, и я не знаю, как выполнить второй вариант.

Ответы [ 2 ]

0 голосов
/ 23 июня 2019

Попробуйте это:

user=userRepository.save(user);

Если он вставлен успешно, он возвращает данные пользователя со значением первичного ключа

0 голосов
/ 11 июня 2019

У вас может быть отдельный класс обслуживания, например, такой:

public class SomeService {
    private Map<String, User> users;

    @Autowired
    private UserRepository userRepository;

    public SomeService() {
        updateUsers();
    }

    public void updateUsers() {
        users = userRepository.findAll().stream().collect(Collectors.toMap(User::getName, u -> u);
    }

    public boolean isNameTaken(String name) {
        return users.contains(name);
    }
    //or
    public User getUserByName(String name) {
        return users.get(name);
    }
}

Вы можете вызывать метод updateUsers() всякий раз, когда ваш репозиторий создает или обновляет пользователя, чтобы карта оставалась актуальной.

Это должно быть достаточно эффективно, если вы беспокоитесь о производительности.

...