场景:
- 堆栈:Java,Spring,Hibernate。
- 型号:客户端-服务器应用程序。
- 模式:模型-视图-控制器(MVC)。
服务层类具有三种行为:
一些服务在方法内具有业务规则,并将持久性委托给应用程序。喜欢:
EntityManager.save(entity);
一些服务只是调用数据库函数(传递参数),例如:
CallableStatement cls = con.prepareCall(“ {call databaseFunction(args)}”);
某些服务同时具有两种行为的方法。
我的问题:
- 让应用程序服务直接调用数据库功能有什么问题吗?这不是不好的做法吗?适用于这样的项目的架构模型是什么?
- 在同一服务中混合行为是否有问题?如交易和一致性?
- 在维护的情况下,这种封装是否使开发人员不清楚他也应该更改数据库中的功能?如何避免这种情况?
- 这种情况是否会在世界各地的其他应用程序中发生,或者仅仅是架构错误?