DAO层当前应该存在,原因如下:
1,必尽还是关系数据库的时代,还有对于数据库访问不同数据库还是有存在差异,用DAO层实现来解决差异,除非ORM足够强大,根本不存在。
2,DAO分担业务层的逻辑(小逻辑),就如domain层实体里不光是setter,getter的原里一样。但这层逻辑业务仅针对DAO对应的domain层相关逻辑,否则建议到service层。
3,service层应该是主要业务逻辑,不关心应用逻是什么,service的逻辑接口应该永远不了,除非业务改变。个人认为我们的业务主逻辑图都在service层,再配罗dao的小逻辑,(千万不要把hibernate的HQL,或者 相关SQL在这里中写逻辑,初学者误区)。
4,DAO可以认为是大海,有无穷的资源,而service是大海上的船,是dao层上按需所取,船下的海域就是不同dao的小业务逻辑。dao与entity应该是强偶合性的,service以上是松偶合。
5,service不光要dao层,还是分布式,远程访问。就是银行转账的扩展。一般应用都是调用银行接口转账,还有相应的业务关联。转账可能不是一个事务的问题了(当然业务层的设计也可以解决,只是简单举例)
分享到:
相关推荐
3. **Spring Service**:创建一个Spring服务接口和实现,负责调用Hibernate的DAO来查询数据库,检查用户名是否存在。如果存在,返回true,否则返回false。 4. **Hibernate DAO**:在Hibernate数据访问对象中,编写...
但是,为了减少开发的重复性工作,人们希望在生成DAO层代码的同时,也能够生成业务层(Service)和控制层(Controller)的代码,以实现真正意义上的快速开发和提升效率。 Mybatis是一个持久层框架,它通过使用XML或...
4. **`propagation`**:事务传播行为,定义了当前事务应该如何与已存在的事务相结合。 - `REQUIRED`:默认值,如果当前存在事务,则加入该事务;如果没有,则新建一个事务。 - `SUPPORTS`:如果当前存在事务,则...
1. 当请求到达Controller时,OpenSessionInViewFilter会检查当前线程中是否已经存在Session,如果不存在,它将创建一个新的Session,并绑定到当前线程。 2. 控制器执行业务逻辑,调用DAO进行数据库操作。由于...
它可能利用了Hibernate框架提供的DAO层接口实现。 - **`UserInfo userInfo = new UserInfo(name);`**:这里创建了一个新的`UserInfo`对象,并设置了其`userName`属性为`name`。 - **`matad.setUserInfo(userInfo);...
然而,系统仍然存在一些不足之处,例如用户体验可以进一步优化、功能模块还可以更加丰富等。未来的研究方向将是继续完善现有系统,并探索更多创新的技术来提升系统的性能和用户体验。 总之,本系统为企业提供了一套...
3. **事务传播行为**:在使用Spring等框架时,可以通过@Transactional注解设置事务的传播行为,例如REQUIRED(如果当前没有事务,则新建一个,否则加入到当前事务)、REQUIRES_NEW(总是新建一个事务,如果存在事务...
附件一提供了详细的实测数据,包括DAO层查询、后端封装、网络传输、前端解析和绘图渲染等各环节的时间消耗,为后续性能调优提供了具体参考。通过对比实测1和实测2的结果,可以看出优化硬件平台对提升系统性能的重要...
2. **优秀的 ORM 实现**:作为主流的 ORM(对象关系映射)框架之一,Hibernate 大大简化了 DAO 层的编码工作。 3. **透明性**:使用 Java 反射机制而非字节码增强程序实现,使得 Hibernate 的使用更加简单直观。 4. ...