WEB开发网
开发学院软件开发Java Spring 事务管理高级应用难点剖析,第 1 部分 阅读

Spring 事务管理高级应用难点剖析,第 1 部分

 2010-03-22 00:00:00 来源:WEB开发网   
核心提示: 运行 UserHibernateWithoutTransManagerService,程序正确执行,Spring 事务管理高级应用难点剖析,第 1 部分(5),并得到类似于 UserJdbcWithoutTransManagerService 的执行结果,这说明 Hibernate 在 Spri

运行 UserHibernateWithoutTransManagerService,程序正确执行,并得到类似于 UserJdbcWithoutTransManagerService 的执行结果,这说明 Hibernate 在 Spring 中,在没有事务管理器的情况下,依然可以正常地进行数据的访问。

应用分层的迷惑

Web、 Service 及 DAO 三层划分就像西方国家的立法、行政、司法三权分立一样被奉为金科玉律,甚至有开发人员认为如果要使用 Spring 的事务管理就一定先要进行三层的划分。这个看似荒唐的论调在开发人员中颇有市场。更有甚者,认为每层必须先定义一个接口,然后再定义一个实现类。其结果是:一个很简单的功能,也至少需要 3 个接口,3 个类,再加上视图层的 JSP 和 JS 等,打牌都可以转上两桌了,这种误解贻害不浅。

对将“面向接口编程”奉为圭臬,认为放之四海而皆准的论调,笔者深不以为然。是的,“面向接口编程”是 Martin Fowler,Rod Johnson 这些大师提倡的行事原则。如果拿这条原则去开发架构,开发产品,怎么强调都不为过。但是,对于我们一般的开发人员来说,做的最多的是普通工程项目,往往最多的只是一些对数据库增、删、查、改的功能。此时,“面向接口编程”除了带来更多的类文件外,看不到更多其它的好处。

Spring 框架提供的所有附加的好处(AOP、注解增强、注解 MVC 等)唯一的前提就是让 POJO 的类变成一个受 Spring 容器管理的 Bean,除此以外没有其它任何的要求。下面的实例用一个 POJO 完成所有的功能,既是 Controller,又是 Service,还是 DAO:

清单 5. MixLayerUserService.java

package user.mixlayer; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.jdbc.core.JdbcTemplate; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
//①.将POJO类通过注解变成Spring MVC的Controller 
@Controller 
public class MixLayerUserService { 
 
  //②.自动注入JdbcTemplate 
  @Autowired 
  private JdbcTemplate jdbcTemplate; 
   
  //③.通过Spring MVC注解映URL请求 
  @RequestMapping("/logon.do")   
  public String logon(String userName,String password){ 
    if(isRightUser(userName,password)){ 
      String sql = "UPDATE t_user u SET u.score = u.score + ? WHERE user_name =?"; 
      jdbcTemplate.update(sql,20,userName); 
      return "success"; 
    }else{ 
      return "fail"; 
    } 
  } 
  private boolean isRightUser(String userName,String password){ 
    //do sth... 
    return true; 
  } 
} 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:Spring 事务管理 高级

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接