最近项目在整架构。要把以前的struts+ibatis+dao.换成现在的struts+ibatis+dao+spring.
于是最近猛啃了下Spring的书。现在项目新架构的框架出来了,我发现,现在多了一层service层。以前是用蒙面类(TableOperatorFacadeBean)来调用DAO接口的实现类,现在变成通过调用service接口,然后在这个接口的实现类中去调用DAO的实现类。。。
限于初学知识不够,始终没弄明白这层是为什么出现,以及它都能做写什么。。。
请哪位指点一下。
附上部分代码,大概问题没描述清楚。
public class LoginAction extends Action{
IUserInfoService userInfoService;
public IUserInfoService getUserInfoService() {
return userInfoService;
}
public void setUserInfoService(IUserInfoService userInfoService) {
this.userInfoService = userInfoService;
}
LoginAction中对数据层的操作现在是:
resUserInfo = userInfoService.getLoginInfo(userInfo);
UserInfoServiceImpl:
public class UserInfoServiceImpl implements IUserInfoService {
IUserInfoDAO userinfoDao;
public IUserInfoDAO getUserinfoDao() {
return userinfoDao;
}
public void setUserinfoDao(IUserInfoDAO userinfoDao) {
this.userinfoDao = userinfoDao;
}
public UserInfoBean getLoginInfo(UserInfoBean userInfo) {
List list=null;
try {
list =userinfoDao.getUserInfo(userInfo);
} catch (Exception e) {
logger.info("获取登录用户信息失败!",e);
return null;
}
UserInfoDAOImpl :
public class UserInfoDAOImpl extends SqlMapClientDaoSupport implements IUserInfoDAO {
public List getUserInfo(UserInfoBean userInfo) {
userInfo.setPassword(MsgDigest.getMD5(userInfo.getPassword()));
List loginList = this.getSqlMapClientTemplate().queryForList(Const_daoimpl.USER_INFO,userInfo);
return loginList;
}
以前就是在ACTION中,直接:
TableOperatorFacadeBean tofb = new TableOperatorFacadeBean();
resUserInfo = tofb.getLoginInfo(userInfo);
我的理解是,使用依赖注入,就是为了减少ACTION对操作操作数据库部分的依赖。使用DAO也是使ACTION不直接调用对数据库调用的代码。其实一样是减少了依赖。那么这里是不是直接依赖注入DAO的接口就可以了?何必还要多出这个SERVICE层?
不知道自己的想法和理解对不对,希望熟悉这方面的人能多指点一下。谢谢!
分享到:
- 2008-01-31 17:48
- 浏览 1043
- 评论(0)
- 论坛回复 / 浏览 (0 / 1419)
- 查看更多
相关推荐
- **HibernateCallback**:定义了一个回调接口,允许在事务内部执行自定义的Hibernate操作。 通过使用HibernateTemplate,开发者可以专注于业务逻辑,而无需关注底层的SessionFactory和Session管理。 总结来说,...
spring-dao.jar spring-dao.jar
Spring框架作为Java开发中的一个重量级工具,提供了强大的支持来实现DAO模式,进而提升代码的可维护性和可扩展性。 ### Spring框架中的DAO模式实现 #### 1. 理解DAO模式 DAO模式的核心理念是将数据访问逻辑从业务...
spring-dao-2.0.8.jar
Spring的DAO支持是其核心模块之一,用于简化数据访问层(DAO)的开发,通过将固定的数据访问逻辑和业务逻辑分离,提高了代码的可维护性和复用性。Spring的DAO设计模式主要体现在模板(Template)和回调(Callback)...
总的来说,这个压缩包提供了一个基于Struts、Hibernate3.0和Spring的完整系统示例,特别是关注于DAO层的实现。学习这个示例,开发者可以了解如何在实际项目中使用Spring整合其他框架,以及如何设计和实现DAO类来处理...
`HibernateTemplate`封装了Hibernate的会话管理,提供了一套便捷的API,而`HibernateDaoSupport`则为DAO实现提供了一个基类,包含了SessionFactory的初始化和关闭。 - **MyBatis**:Spring整合MyBatis时,可以通过...
spring集成hibernate通用dao,泛型,server都可以调用
### Spring DAO 概述 Spring框架提供了一套强大的数据访问抽象层——DAO(Data Access Object)支持,使得开发者能够在不关心具体数据库技术细节的情况下完成数据访问任务。这一机制极大地简化了开发过程,降低了...
本资源“spring_aop.rar_spring-dao”是一个关于Spring AOP(面向切面编程)和Spring DAO(数据访问对象)的实例,旨在帮助开发者理解如何在Spring框架下实现AOP的控制反转,并有效地进行DAO层的操作。 首先,我们...
Spring 数据库访问的支持。包括统一异常体系和Spring的Template+CallBack的解读
JavaEE源代码 spring-daoJavaEE源代码 ...daoJavaEE源代码 spring-daoJavaEE源代码 spring-daoJavaEE源代码 spring-daoJavaEE源代码 spring-daoJavaEE源代码 spring-daoJavaEE源代码 spring-daoJavaEE源代码 spring-dao
这个错误通常意味着编译环境无法找到`DaoSupport`类,这是Spring DAO模块中的一个关键类,用于提供数据访问对象(DAO)的基本支持。`DaoSupport`是许多自定义DAO实现的基础,它提供了事务管理和其他便利功能。 首先...
在Spring DAO项目中,通常会包含`spring-jdbc.jar`,这个jar包包含了Spring对JDBC的增强支持。 2. **ORM集成**:Spring还支持多种Object-Relational Mapping(ORM)框架,如Hibernate、MyBatis、JPA等。这些ORM框架...
2. Spring的JDBC DAO实现:在Spring中,我们可以创建一个接口定义数据库操作,然后使用Spring的ProxyFactoryBean或AOP来实现接口,实现事务管理和异常处理。 三、Spring JDBC核心组件 1. DataSource:数据源是连接...
spring3.2后端 一个dao练习,木有mvc,就只有一个通用的dao,管理若干个mapper文件,service 传入 mapperName.cmdName 参数 ,通过通用dao,调用指定namespace的mapper
在Spring中,我们可以创建一个继承自`org.mybatis.spring.SqlSessionDaoSupport`的DAO基类,然后为每个数据访问对象创建一个具体的实现类。在实现类中,我们可以使用`SqlSessionTemplate`或`SqlSession`来执行...