使用注解实现事务处理

<tx:annotation-driven transaction-manager="transactionManager"/>
1,首先,将action,service,dao所有层的所有类整到容器里面;

在Dao上 @Respository("employeeDao")

@Repository("employeeDao")
public class EmployeeDaoHibImpl implements
        EmployeeDao {
    @Autowired
    private HibernateTemplate hibernateTemplate;
@Transactional
@Service("claimVoucherService")
public class ClaimVoucherServiceImpl implements ClaimVoucherService {
    //记录日志
    private final Log logger = LogFactory.getLog(getClass());

    @Autowired
    @Qualifier("claimVoucherDao")
    private ClaimVoucherDao claimVoucherDao;

    @Autowired
    @Qualifier("claimVoucherDetailDao")
    private ClaimVoucherDetailDao claimVoucherDetailDao;    
<bean id="hibernateTemplate"
        class="org.springframework.orm.hibernate3.HibernateTemplate" autowire="byName"/>
<!-- 扫描dao和sevice包中注解标注的类 -->
    <context:component-scan
        base-package="cn.bdqn.jboa.dao.hibimpl, cn.bdqn.jboa.service.impl" />

    <!-- 定义事务管理器 -->
    <bean id="txManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    <tx:annotation-driven transaction-manager="txManager" />

同时会发现,如果在save,update,delete上没有加事务限制,就会报错;因为默认是只读的事务;
如果一个方法上有@Transactional这个类就创建代理对象,有了事务;
但是如果全部没有加@Transactional,就不会创建代理对象;就不存在事务;
就是只要有一个加有事务,就会创建代理对象;否则不会;是只读事务;
----
什么情况适合注解,什么情况适合配置文件?
基本类型不适合用注解,只需要赋值,框架内部分额不适合用注解;其他都可以使用注解配置实现引用;

时间: 2024-10-11 05:25:10

使用注解实现事务处理的相关文章

springMVC 注解版

关于Spring MVC注解 @Transactional 事务标签 @InitBinder 标签 分类: Java开发 源代码分享2012-06-14 10:59 7721人阅读 评论(2) 收藏 举报 springmvcjavaemailpathstring 主要用到了spring-aop-2.5.6.jar的AOP支持包! 之前我们在AccountService中加入了注解@Transactional标签,但是要想要真正发挥事务作用,还需要一些配置. 主要需要调整dao.xml文件 dao

SSH(三)

在Spring中引用属性文件:    优点:        1.防止随意更改jdbc的连接        2.给不懂代码的人使用    步骤:        1.数据库连接信息写在属性文件中        范例:#jdbc.properties 1 jdbc.driver = com.mysql.jdbc.Driver 2 jdbc.url = jdbc:mysql://localhost/db 3 jdbc.username = root 4 jdbc.password = root 2.采用

Java Persistence with MyBatis 3(中文版) 第五章 与Spring集成

MyBatis-Spring是MyBatis框架的子模块,用来提供与当前流行的依赖注入框架Spring的无缝集成. Spring框架是一个基于依赖注入(Dependency Injection)和面向切面编程(Aspect Oriented Programming,AOP)的Java框架,鼓励使用基于POJO的编程模型.另外,Spring提供了声明式和编程式的事务管理能力,可以很大程度上简化应用程序的数据访问层(data access layer)的实现.在本章中,我们将看到在基于Spring的

ssh笔记整合

1.整合Spring和Hibernate框架JBOA数据库设计1.部门表2.雇员表3.职位表4.报销单表5.报销单明细表6.审核记录表2.SSH架构 1.Struts 2+Spring+Hibernate 2.以Spring作为核心框架,数据持久化使用 Hibernate完成,表现层使用Struts 2 3.Spring提供对象管理.面向切面编程等实用功能 4.通过Spring提供的服务简化编码.降低开发难度.提高开发效率 1.整合思路 1.逆依赖方向而行.由spring提供对象管理和服务 2.

Spring||Interview

1.依赖注入(DI)(IOC) 对象本身不负责对象的创建和维护,将控制权转交给外部的容器实现,降低程序的耦合度,只提供java方法让容器决定依赖关系,依赖关系的对象通过JavaBean属性或者构造函数传递给需要的对象,使用<bean>元素去构造组件时,为id定义一个唯一的名称,通过调用属性的setter方法实现. 以多种方式实现依赖注入,分为构造注入,p命名注入: 构造注入 在applicationContext.xml中使用<constructor-arg> 去定义DAO实现,使

Java Persistence with MyBatis 3(中国版) 第五章 与Spring集成

MyBatis-Spring它是MyBatis子模块框.它用来提供流行的依赖注入框架Spring无缝集成. Spring框架是一个基于依赖注入(Dependency Injection)和面向切面编程(Aspect Oriented Programming,AOP)的Java框架,鼓舞使用基于POJO的编程模型. 另外,Spring提供了声明式和编程式的事务管理能力.能够非常大程度上简化应用程序的数据訪问层(data access layer)的实现.在本章中,我们将看到在基于Spring的应用

Spring学习5-Spring整合JDBC及其事务处理(注解方式)

一.整合的步骤   1.步骤一:首先要获得DataSource连接池(推荐使用B方式): 要对数据库执行任何的JDBC操作,需要有一个Connection.在Spring中,Connection对象是通过DataSource获得的. 有几种方法可以得到DataSource, 其中一种方法是使用Spring提供的轻量级 org.springframework.jdbc.datasource.DriverManagerDataSource,第二种方法是使用 org.apache.commons.db

Spring JSR-250注解

Spring JSR-250注解 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名.类型等信息,如果关系表字段和 PO 属性名.类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过 Java 反射机制获取. 注释和 Java 代码位于一个文件中,而 XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果

8、Spring+Struts2+MyBaits(Spring注解+jdbc属性文件+log4j属性文件)

一.注解理论 使用注解来构造IoC容器 用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan base-package=”pagkage1[,pagkage2,…,pagkageN]”/>. 如:在base-package指明一个包 1 <context:component-scan base-package="cn.gacl.java"/> 表明cn.gacl.java包