在哪里放置业务逻辑?

时间:2011-10-03 21:40:54

标签: sql database logic

正如标题所示,我正在思考我的应用程序中的行踪,以提出一些商业逻辑,并对一些意见感兴趣。这是一个简单的应用程序,它从Web下载页面并将它们存储在sqlite数据库中。

业务逻辑规定应用程序只能存储特定URL的一个条目。我已经设置了数据库,因此URL必须是唯一的,并且当前依赖于此来强制执行逻辑。即如果尝试插入已存储的网页,则会从数据库返回错误代码并通知用户。

但是,我不禁觉得“app layer”(java代码)也应该知道这个规则 - 为此依赖sql错误代码感觉不对。

我想我有三个选择:

1让数据库强制执行逻辑

2让app层强制执行逻辑并删除数据库上的唯一约束

3在两个地方都有逻辑

No 2对我来说是最不可取的,因为数据库不能控制自己的完整性。 No 3需要一些重复,但意味着同一个数据库可以在其他应用程序中使用,并且其完整性将保持不变。

很想听听有关此事的一些看法。

提前致谢, 百里

1 个答案:

答案 0 :(得分:1)

应用层应该强制执行逻辑。这对于设计来说更容易。数据库做数据事务和业务逻辑层(应用层)做逻辑。保持分离并使您的生活更简单,因为当您需要更改数据时,您需要在数据库中更改它,并且在应用层中更改任何逻辑更改。这是一个备受争议的话题,所以要准备好接受不同的答案。