相关疑难解决方法(0)

将唯一违规例外传播到UI的最佳做法

我们正在开发基于JPA 2,Hibernate,Spring 3和在Tomcat 7中运行的JSF 2的Java Web项目.我们使用Oracle 11g作为数据库.

我们目前正在讨论将数据库约束违规填充为用户友好消息的方法.或多或少我们看到两种方式,两种方式都不令人满意.有人可以提供一些建议吗?

方法1 - 以编程方式验证并抛出特定异常

在CountryService.java中,将验证每个Unique约束并抛出相应的异常.异常在辅助bean中单独处理.

优点:易于理解和维护.特定用户消息可能.

缺点:很多代码只是为了拥有好消息.基本上所有DB约束都会在应用程序中重新编写.很多查询 - 不必要的db加载.

@Service("countryService")
public class CountryServiceImpl implements CountryService {

    @Inject
    private CountryRepository countryRepository;

    @Override
    public Country saveCountry(Country country) throws NameUniqueViolationException,  IsoCodeUniqueViolationException, UrlUniqueViolationException {
        if (!isUniqueNameInDatabase(country)) {
            throw new NameUniqueViolationException();
        }
        if (!isUniqueUrl(country)) {
            throw new UrlUniqueViolationException();
        }
        if (!isUniqueIsoCodeInDatabase(country)) {
            throw new IsoCodeUniqueViolationException();
        }
        return countryRepository.save(country);
    }
}
Run Code Online (Sandbox Code Playgroud)

在View的Backing Bean中,您可以处理异常:

@Component
@Scope(value = "view")
public class CountryBean {

    private Country country;

    @Inject
    private CountryService …
Run Code Online (Sandbox Code Playgroud)

jsf spring hibernate jpa constraints

17
推荐指数
2
解决办法
2万
查看次数

标签 统计

constraints ×1

hibernate ×1

jpa ×1

jsf ×1

spring ×1