持久层是一组文件,用于在应用程序和数据库之间进行通信。 2.业务逻辑层是如何从数据库检索数据信息的规则,然后服务器将这些信息显示在用户表示层上
这两个图层看起来相同
在实际情况下它们是什么意思?他们在代码上也有区别吗?
答案 0 :(得分:0)
分层系统的想法是隔离。一层独立于另一层。
有多少个不同的数据库? PostgreSQL,MySql,MongoDB,Cassandra ... 持久层(或数据访问层)将为您的系统提供一个接口。 假设您的系统需要通过其ID查找用户。
public interface UserRepository {
User findByID (Long id);
}
对于每个数据库,实现都会改变,但是对于使用它的应用程序,这真的重要吗? 否,只要界面提供的合同没有违反。
一旦有了数据,业务逻辑将规定处理数据的方式和方式。从MVC的角度来看,业务逻辑还定义了事务范围(更多信息:Why we shouldn't make a Spring MVC controller @Transactional?)。 假设您拥有使用上一个界面检索的用户。但是您需要返回其他属性,例如其薪水。但是用户POJO上没有薪水属性。而且,要计算薪水,您的系统需要调用一个外部系统。您的业务逻辑将解决此问题,然后将压缩的对象(称为数据传输对象)返回给调用方。
一些资源:
https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html