相关疑难解决方法(0)

数据库与代码中的业务逻辑?

作为一名软件工程师,我非常倾向于在应用程序层编写业务逻辑,而通常只依赖于数据库而不仅仅是CRUD(创建检索更新和删除)操作.另一方面,我遇到了在存储过程中编写大量业务逻辑的应用程序(通常是较旧的应用程序),因此有些人更喜欢在数据库层中编写业务逻辑.

对于在存储过程中拥有和/或享受书面/写作业务逻辑的人来说,使用此方法的原因是什么?

database architecture methodology n-tier-architecture

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

业务逻辑:数据库或应用层

古老的问题.您应该将业务逻辑放在数据库中作为存储过程(或包),还是应用程序/中间层?更重要的是,为什么?

假设数据库独立性不是目标.

database oracle business-logic

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

逻辑:数据库或应用程序/ 2(约束检查)

这是此问题的特定版本.
我想检查是否插入了重复的行.我应该在我的应用程序层中以编程方式检查它:

if (exists(obj))
{
    throw new DuplicateObjectException();
}
HibernateSessionFactory.getSession().save(obj);
Run Code Online (Sandbox Code Playgroud)

或者我应该捕获数据库层抛出的异常并在违反约束时触发?

try
{
    HibernateSessionFactory.getSession().save(obj);
}
catch(ConstraintViolationException e)
{
    throw new DuplicateObjectException();
}
Run Code Online (Sandbox Code Playgroud)

编辑:换句话说:虽然约束是保留的(无论如何它是好的数据库设计,我不能确定我的应用程序将是访问该表的唯一一个)我是否应该依赖约束并处理它的违规异常会提高,或者我最好还是检查一下?

EDIT2:当然我在一个事务中检查+插入,锁定表以确保在此期间没有其他进程正在写另一个记录

database business-logic-layer

8
推荐指数
1
解决办法
1200
查看次数