В веб-приложении я разрешаю пользователю создать Item . Манипуляции с БД выполняются с помощью dao реализации
которые используют hibernate . Общая реализация dao использует Criteria для запроса
Имя элемента уникально. Поэтому я должен запретить пользователю создавать два элемента с одинаковым именем.
Как мне сделать это в коде? Каждый раз, когда пользователь пытается создать элемент, я должен вызвать itemDao.findItemByName (newname) ,
и если элемент существует, выдает пользователю сообщение об ошибке? Или я должен поместить код создания элемента в блок try catch, исключение catch,
и скажите пользователю, что попытка создать новый элемент не удалась?
Мне кажется, что первый подход позволит мне дать более точное сообщение об ошибке пользователю. Но это будет связано с одним вызовом проверки БД
за каждую попытку создания элемента. Вторым будет некоторое исключение, всплывающее из класса дао и менее конкретное.
Буду признателен за совет по этому поводу.
искренне
Jim
GenericDaoImpl
...
public T findUniqueItemByProperty(String propName,String propVal){
Class clz = getPersistentClass();
Session session = getSession();
logger.info("session="+session.hashCode());
Criteria cri = session.createCriteria(clz).add(Restrictions.eq(propName,propVal));
return (T)cri.uniqueResult();
}
public void saveOrUpdate(T obj) {
getSession().saveOrUpdate(obj);
}
...
ItemDao
...
public Item findItemByName(String name){
return findUniqueItemByProperty("name",name);
}
public void saveOrUpdateItem(Item item){
saveOrUpdate(item);
}