`
glacier3
  • 浏览: 386211 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

SPRING AOP Transaction

阅读更多
    今天在公司(Symbio CORP .)里修改一个老的投票系统的时候出现了一个和事物处理相关问题,最终在Andy的帮助下得以解决。首先真的很感谢他的帮助!呵呵,说实话他真对Spring很了解!还得多向他学习。
    问题是这样的
控制器VoteViewFrontController的save方法的代码(SPRING MVC)
  1. public ModelAndView save(HttpServletRequest request,   
  2.                             HttpServletResponse response) throws Exception {   
  3.        long id = RequestUtil.getLongParameter(request, "id");   
  4.        String cookieName = "Vote" + id;   
  5.        Cookie c = RequestUtil.getCookie(request, cookieName);   
  6.        if (c != null) {   
  7.            return view(request, response);   
  8.        }   
  9.        String[] ids = request.getParameterValues("voteSub");   
  10.        Map model = new HashMap();   
  11.        Vote vote = null;   
  12.        Vote lastVote = null;   
  13.        Vote nextVote = null;   
  14.        Set voteContents = null;   
  15.        vote = voteManager.getVote(new Long(id));   
  16.        if (id > 0) {   
  17.            vote = voteManager.getVote(new Long(id));   
  18.            if (id - 1 > 0) {   
  19.                lastVote = voteManager.getVote(new Long(id - 1));   
  20.            }   
  21.            if (id + 1 > 0) {   
  22.                nextVote = voteManager.getVote(new Long(id + 1));   
  23.            }   
  24.            voteContents = vote.getVoteContents();   
  25.        } else {   
  26.            throw new Exception("Invalid vote id.");   
  27.        }   
  28.        model.put("vote", vote);   
  29.        if (lastVote != null) {   
  30.            model.put("lastVote", lastVote);   
  31.        }   
  32.        model.put("vote", vote);   
  33.        if (nextVote != null) {   
  34.            model.put("nextVote", nextVote);   
  35.        }   
  36.        List voteContentsL = new ArrayList();   
  37.        voteContentsL.addAll(voteContents);   
  38.        Collections.sort(voteContentsL);   
  39.        model.put("voteContents", voteContentsL);   
  40.        if (ids != null) {   
  41.            String id1;   
  42.            // VoteContent bean = new VoteContent();   
  43.            for (int i = 0; i < ids.length; i++) {   
  44.                id1 = ids[i];   
  45.                voteContentManager.saveVoteContent(Long.valueOf(id1), request   
  46.                    .getRemoteAddr());   
  47.            }   
  48.        } else {   
  49.            model.put("error""error");   
  50.            return new ModelAndView("voteView""model", model);   
  51.        }   
  52.        String saved = "saved";   
  53.        model.put("saved", saved);   
  54.        String cookiePath = "";   
  55.        String cookieValue = "cookieValue";   
  56.        RequestUtil.setCookie(response, cookieName, cookieValue, cookiePath);   
  57.        return new ModelAndView("voteView""model", model);   
  58.    }  

 

java 代码
  1. public void saveVoteContent(VoteContent voteContent) {   
  2.        // if (voteContent.getId() == null)   
  3.        // getHibernateTemplate().save(voteContent);   
  4.        // else   
  5.        // getHibernateTemplate().update(voteContent);   
  6.        getSession().saveOrUpdate(voteContent);   
  7.    }   
  8.   
  9.    public void saveVoteContent(Long id, String ip) {   
  10.        List voteContents =   
  11.            getHibernateTemplate()   
  12.                .find("from VoteContent n where n.id = ?", id);   
  13.        VoteContent voteContent = new VoteContent();   
  14.        if (voteContents.size() > 0) {   
  15.            voteContent = (VoteContent) voteContents.get(0);   
  16.        }   
  17.        long count;   
  18.        if (voteContent.getCount() != null)   
  19.            count = voteContent.getCount().longValue();   
  20.        else  
  21.            count = 0;   
  22.        count++;   
  23.        voteContent.setCount(new Long(count));   
  24.        voteContent.setIp(ip);   
  25.        voteContent.setModifiedDate(new Date());   
  26.        getSession().saveOrUpdate(voteContent);   
  27.    }   
  28.   
  29.    public void vote(Long id, String ip) {   
  30.        List voteContents =   
  31.            getHibernateTemplate()   
  32.                .find("from VoteContent n where n.id = ?", id);   
  33.        VoteContent voteContent = new VoteContent();   
  34.        if (voteContents.size() > 0) {   
  35.            voteContent = (VoteContent) voteContents.get(0);   
  36.        }   
  37.        long count;   
  38.        if (voteContent.getCount() != null)   
  39.            count = voteContent.getCount().longValue();   
  40.        else  
  41.            count = 0;   
  42.        count++;   
  43.        voteContent.setCount(new Long(count));   
  44.        voteContent.setIp(ip);   
  45.        voteContent.setModifiedDate(new Date());   
  46.        saveVoteContent(voteContent);   
  47.    }   

 

文章资料整理中。。。。。。。

近期完成

 

分享到:
评论

相关推荐

    软件依赖包(Spring AOP+Hibernate Transaction)

    本资源提供的"软件依赖包(Spring AOP+Hibernate Transaction)"正是这样一种集合,它包含了Spring AOP和Hibernate Transaction管理的jar文件,使得开发者能够便捷地在Java应用中实现面向切面的编程(AOP)以及事务...

    mybatis 拦截器 + spring aop切面 + spring事务+ 反射工具类

    3. Spring事务管理(Spring Transaction Management): Spring提供了强大的事务管理功能,无论是编程式还是声明式的事务管理,都能帮助开发者有效地控制事务的边界。声明式事务管理通过@Transactional注解实现,...

    spring-nested-aop.zip_aop_spring aop

    Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的一个重要组成部分。它提供了一种模块化和声明式的方式来处理横切关注点,如事务管理、日志记录、性能监控等,这些关注点通常会分散在...

    Spring-Struts-IBatis-AOP-Transaction

    在 "17-Prj-Spring-Struts-IBatis-AOP-Transaction" 这个项目中,这四个框架被集成在一起,形成一个强大的 web 应用开发解决方案。Spring 作为整个系统的基石,负责依赖注入和事务管理;Struts 2 处理 HTTP 请求,...

    spring注解aop demo

    Spring注解AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的一个重要特性,它使得开发者可以在不修改原有代码的情况下,通过添加注解来实现横切关注点,如日志、事务管理等。下面我们将深入探讨...

    实验2 Spring AOP源码

    1、 理解Spring AOP原理和基本概念; 2、掌握基于XML/注解方式的AOP编程; 二:实验内容 1、 定义交易接口: public interface Transaction{ public void income(float amount);//收入 public void expenditure...

    Spring AOP管理Hibernate事务(TransactionInSpringAOP)

    在Spring框架中,AOP(面向切面编程)被广泛用于事务管理,特别是与ORM(对象关系映射)框架如Hibernate结合使用时。本篇文章将深入探讨如何在Spring AOP中实现Hibernate事务管理,以及这一过程中的关键概念和技术...

    spring aop实现用户权限管理的示例

    AOP(Aspect-Oriented Programming)在实际项目中运用的场景主要有权限管理(Authority Management)、事务管理(Transaction Management)、安全管理(Security)、日志管理(Logging)和调试管理(Debugging)等。...

    Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)

    Spring作为一款全功能的轻量级框架,提供了丰富的功能,包括依赖注入、面向切面编程(AOP)以及事务管理等。而Hibernate则是一款强大的对象关系映射(ORM)工具,它简化了数据库操作,使开发者可以使用面向对象的...

    spring-transaction.jar.zip

    1. XML配置:在Spring的配置文件中,使用`&lt;tx:advice&gt;`定义事务处理规则,然后通过`&lt;aop:config&gt;`或`&lt;aop:aspect&gt;`将事务规则应用到特定的业务方法上。 2. 注解驱动:使用@Transactional注解在方法上,Spring会自动...

    Spring在Transaction事务传播行为种类

    &lt;bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"&gt; &lt;!-- 指定对满足哪些beanname的bean自动生成业务代理 --&gt; &lt;!-- 下面是所有需要自动创建事务代理的bean --&gt; &lt;value&gt;...

    springaop学习方法

    Spring AOP,全称Spring面向切面编程,是Spring框架的核心特性之一,它扩展了传统的面向对象编程(OOP),引入了面向切面编程的概念,主要用于实现程序功能的统一维护和解耦。AOP允许开发者定义“切面”,这些切面...

    Spring 常用 Transaction Annotation

    本篇主要聚焦于"Spring 常用 Transaction Annotation",即声明式事务管理,这是一种更简洁、易于维护的事务控制方式。 首先,Spring的声明式事务管理基于AOP(面向切面编程),它允许我们在不修改业务代码的情况下...

    Spring面向切面编程AOP

    面向切面编程(AOP,Aspect Oriented Programming)是Spring框架中的一个重要特性,它提供了一种模块化和声明式的方式来处理程序中的横切关注点,如日志、事务管理、安全控制等。AOP的核心概念包括切面、通知、连接...

    深入理解Spring AOP

    【深入理解Spring AOP】 Spring AOP,全称Aspect-Oriented Programming,是Spring框架的重要组成部分,它提供了面向切面编程的能力,旨在解决传统面向对象编程(OOP)中横切关注点的问题。OOP强调封装、继承和多态...

    2024Spring AOP最新HM

    ### 2024Spring AOP 最新HM详解 #### 一、事务管理与AOP概念 ##### 1.1 事务回顾 在数据库管理中,事务是一个非常重要的概念,它指的是一个不可分割的工作单元。当一系列操作作为事务的一部分时,这些操作必须...

    ssh-aop笔记

    SSH-AOP笔记主要涵盖的是Spring、Struts和Hibernate三大框架集成使用时,如何结合Aspect Oriented Programming(面向切面编程)的理念进行应用增强。在Java企业级开发中,SSH是常用的MVC架构,而AOP则是一种编程范式...

    Spring AOP源码深度剖析开源架构源码2021.pdf

    在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许开发者定义“切面”,这些切面可以插入到应用程序的多个点,通常用于实现如日志、事务管理等跨切面关注点。Spring AOP通过代理机制来实现这一功能,...

    Spring实现AOP以及AOP的定义

    **Spring 实现AOP及其定义** AOP(Aspect Oriented Programming,面向切面编程)是一种编程范式,它旨在提高代码的可复用性和模块化,通过将关注点分离为独立的“切面”来组织代码。在Spring框架中,AOP被用来处理...

Global site tag (gtag.js) - Google Analytics