我使用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答案 –