我使用spring,hibernate和postgreSQL。插入具有唯一屬性的記錄的正確方法
比方說,我有一個表看起來像這樣:
CREATE TABLE test
(
id integer NOT NULL
name character(10)
CONSTRAINT test_unique UNIQUE (id)
)
所以總是當我插入記錄的id屬性應該是唯一的
我想知道什麼是插入新的更好的方法記錄(在我的Spring Java應用程序):
1)檢查與給定的ID記錄存在,如果它不插入記錄,這樣的事情:
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");
}
我認爲第一個適當的方式,但它意味着DB更多的處理。你有什麼意見?
非常感謝您的任何建議。
在我的案例中,id是從用戶提交的表單中提取的(好吧,它不完全是id,但其他一些列...),所以我應該進行檢查,儘管它意味着更多的「加載」DB,對吧? – Michael
是的,絕對。用戶輸入始終必須被視爲最不受信任的來源。 –
通過事先檢查,您可能仍會遇到異常情況,請參閱Craigs答案 –