Проверка на наличие объекта в базе данных

226
14 июня 2017, 00:58

Как оптимальнее проверить при сохранении - есть ли уже объект в базе данных? Подойдет ли код:

session.beginTransaction();
Query query = session.createQuery("select name from User where name = :userName");
query.setParameter("userName", user.getName());         
if (((org.hibernate.query.Query) query).list().isEmpty()) {
    session.save(user);
    session.getTransaction().commit();
}                       
Answer 1

Я бы немного по другому сделал бы:

Query query = session.createQuery("select name from User where name = :userName");
query.setParameter("userName", user.getName());         
if (((org.hibernate.query.Query) query).list().isEmpty()) {
    session.beginTransaction();
    session.save(user);
    session.getTransaction().commit();
}   

Смысл в том, что незачем городить транзакцию при проверке наличия. Если нет то тогда только имеет смысл начинать транзакцию.

Транзакция достаточно дорогая штука и не фиг ее расходовать на тупую проверку.

READ ALSO
Добавление значений в LinkedHashMap<Integer, ArrayList>

Добавление значений в LinkedHashMap<Integer, ArrayList>

Как добавлять элементы в ArrayList?

298
редактирование non-public классов

редактирование non-public классов

Начал изучать Java и наткнулся на то, что не могу редактировать некоторые классы в Android StudioПытаюсь расковырять некоторые проекты с гитхаба

230
In app purchase: Необходимо войти в аккаунт Google

In app purchase: Необходимо войти в аккаунт Google

Пользуюсь этой либой для in-app purchasing Но есть ошибка, пишет "Необходимо войти в аккаунт Google"Приложения ещё нет в Play Market'e

218
Jquery ui slider, отступ

Jquery ui slider, отступ

Подскажите, как сделать по бокам ползунка отступ, чтобы нельзя было передвинуть ползунок к самому краю?

301