千家信息网

Spring中@Transactional如何配置

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章将为大家详细讲解有关Spring中@Transactional如何配置,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。背景:spring老版本是使用Trans
千家信息网最后更新 2025年12月01日Spring中@Transactional如何配置

这篇文章将为大家详细讲解有关Spring中@Transactional如何配置,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

  • 背景:

    1. spring老版本是使用TransactionProxyFactoryBean来实现对spring的事务进行配置(缺点自己google,一大堆的缺点)

    2. spring2.x引入了AOP(面向切面的编程)

    3. 当初项目也是喜欢用spring xml方式的配置,后来项目使用spring3.x版本,看到了@Transactional注解,个人觉得挺方便和实用。(具体什么原因,说不清)

  • 上代码

    1.                                 classpath:/db.properties                                                                                classpath:/sqlmap-config.xml                                                        classpath*:/sqlmap/*.xml                                                            stat        20        1        60000        1        60000        300000        SELECT 'x'        true        false        false        true        20                                                                    
    2. package com.xun.spring3.src.dao;import com.ibatis.sqlmap.client.SqlMapClient;import org.apache.commons.lang.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;import javax.annotation.PostConstruct;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;/** * 要求每个dao的命名以 Dao结尾 * 泛型 ENTITY - 具体哪个实体 * 泛型 PRIMARYKEY - 具体主键的类型 * @Date : 2014/9/7 0007 20:41 * @From : spring3-test * @Author : hebad90@163.com */public class BaseDao extends SqlMapClientDaoSupport {    @Autowired    private SqlMapClient sqlMapClient;    @PostConstruct    private void initSuper() {        /**         * 初始化父类         */        super.setSqlMapClient( sqlMapClient );    }    private Class entityClass ;    private String ibatisNamespace;    protected BaseDao() {        Type genType = getClass().getGenericSuperclass();        Type[] params = ((ParameterizedType)genType).getActualTypeArguments();        entityClass = (Class)params[0];        /**         * 获取当前 ibatis的命名空间 XxxDao 即命名空间为 xxx         */        this.ibatisNamespace = getIbatisNamespace( getClass() );        System.out.println( "初始化当前环境成功,ibatisNamespace=["+this.ibatisNamespace+"],entityClass=[" + entityClass + "]" );    }    public PRIMARYKEY insert( ENTITY entity ) {        return(PRIMARYKEY)super.getSqlMapClientTemplate().insert( this.ibatisNamespace + ".insert", entity );    }    public int update( ENTITY entity ) {        return super.getSqlMapClientTemplate().update( this.ibatisNamespace + ".update", entity );    }    public ENTITY queryById( PRIMARYKEY primarykey ) {        return ( ENTITY ) super.getSqlMapClientTemplate().queryForObject( this.ibatisNamespace + ".queryById", primarykey);    }    public int delete( ENTITY entity ) {        return super.getSqlMapClientTemplate().delete( this.ibatisNamespace + ".delete", entity);    }    ///##############################    private String getIbatisNamespace( Class clazz ) {        String simpleName = clazz.getSimpleName();        int index = StringUtils.indexOf( simpleName, "Dao" );        return StringUtils.lowerCase( StringUtils.substring( simpleName, 0, index ) );    }}
    3. @Transactional在何处使用?Spring建议我们在业务实现类上使用该注解,因为java的实现不能继承注解。所以,最好是在业务实现类上注解,这样不管中的proxy-target-class为true或者false,业务类都会启用事务机制。

    4. @Transactional的参数怎么使用?




关于"Spring中@Transactional如何配置"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

事务 切面 注解 配置 业务 属性 篇文章 代理 实用 事务管理 名字 子类 更多 版本 空间 缺点 项目 管理 不错 成功 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 教师学习网络安全法学习感悟 咸宁市跑腿软件开发app 张家口市电视台网络安全 上海交通大学网络安全考研分数线 北京做数据库工程师多少工资 云南造pc服务器 东至自动化软件开发服务哪个好 株洲烟草网络安全中标 软件开发和硬件开发哪个难 iphone6服务器地址 数据库泄露下载 浙江语音网络技术服务优势 和平区信息网络技术诚信合作 设为家庭网络安全吗 如何获得服务器维护资格证 网络安全鈤安全口号 软件开发教程软件 战术小队有哪些好玩的服务器 富士康内部邮件服务器 泉州手机app软件开发 ie添加代理服务器 王安网络技术服务公司 帝国神话怎么创建服务器红字 收银机里的数据库怎么删除 百度谷歌的数据库是 德惠网络安全监察局在哪 云服务器适合做什么行业 鼎甲备份服务器安装包在哪个目录 大学软件开发专科必修课程 泰格安装软件提示未连接服务器
0