Я использую spring, hibernate и postgreSQL.Правильный способ вставки записи с уникальным атрибутом
Скажем, у меня есть таблица вида:
CREATE TABLE test
(
id integer NOT NULL
name character(10)
CONSTRAINT test_unique UNIQUE (id)
)
Так всегда, когда я вставить запись атрибут ID должен быть уникальным
Я хотел бы знать, что это лучший способ, чтобы вставить новый запись (в моем весеннем Java приложение):
1) Проверьте, если запись с заданным идентификатором существует, и если он не вставляет записи, что-то вроде этого:
if(testDao.find(id) == null) {
Test test = new Test(Integer id, String name);
testeDao.create(test);
}
2) Вызов прямой метод создания и ждать, если он будет бросать DataAccessException ...
Test test = new Test(Integer id, String name);
try{
testeDao.create(test);
}
catch(DataAccessException e){
System.out.println("Error inserting record");
}
Я считаю, что 1-й путь уместно, но это означает больше обработки для БД. Каково твое мнение?
Заранее благодарю за любой совет.
В моем случае идентификатор берется из формы, представленной пользователем (ну его не точно id, но какой-то другой столбец ...), поэтому я должен сделать чек, несмотря на то, что это означает больше «загрузки» для БД, правильно? – Michael
Да, абсолютно. Пользовательский вход всегда должен считаться наименее надежным источником. –
С предварительной проверкой вы все равно можете столкнуться с исключением tho, см. Ответ Craigs –