Spring Transaction学习笔记-基于元注解的方式声明事务

Spring Transaction 声明式事务管理 Spring Transaction 声明式事务管理1. Spring 事务特性2. Spring 事务API3. Spring 事务传播行为4. Spring 事务分类4.1 编程式事务4.2 声明式事务5. Spring 事务操作转账5.1 无事务操作5.2 XML 配置事务5.3 配置事务通知5.4 注解 配置事务 参考资料:https://lfvepclr.gitbooks.io/spring-framework-5-doc-cn/content/ 1. Spring 事务特性 事务 : 是逻辑上 阅读详情

基于元注解的声明事务方式的流程

1、设置数据源在com.mchange.v2.c3p0.ComboPooledDataSource类中,这里我使用的是C3P0数据源
2、将数据源注入到org.springframework.orm.hibernate4.LocalSessionFactoryBean
3、我们org.springframework.orm.hibernate4.LocalSessionFactoryBean注入到org.springframework.orm.hibernate4.HibernateTransactionManager我们使用的Hibernate事务管理器中。
4、我们将org.springframework.orm.hibernate4.LocalSessionFactoryBean注入到DAO层中。
5、在以上步骤完成以后,需要添加<tx:annotation-driven transaction-manager="transactionManager"/>
6、我们的Hibernate映射需要执行包扫描<context:component-scan base-package="com.zbt.*"/>

下面就是配置文件和代码实例

package com.zbt;

import javax.persistence.*;

@Entity
@Table(name="stu")
public class Student {
    @Id
    @Column(name="id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column(name="first_name")
    private String firstName;
    @Column(name="last_name")
    private String lastName;
    @Column(name="address")
    private String address;
    @Column(name="phone")
    private String phone;
    //省略Setters和Getters方法
}

ApplicationConfig.xml配置步骤

<!--使用c3p0配置 使用配置文件的方式需要指明配置文件的位置-->
<context:property-placeholder location="classpath:/jdbc.properties"/>
<!--从配置文件中读取配置信息,完成com.mchange.v2.c3p0.ComboPooledDataSource注入-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driverClass}"/>
        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"/>
        <property name="user" value="${jdbc.user}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

将com.mchange.v2.c3p0.ComboPooledDataSourceh注入到org.springframework.orm.hibernate4.LocalSessionFactoryBean;这里相当于我们之前的hibernate.cfg.xml配置好了以后和DataSource注入到LocalSessionFactoryBean当中

    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="annotatedClasses">
            <list>
                <value>com.zbt.Student</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">false</prop>
            </props>
        </property>
    </bean>

然后将org.springframework.orm.hibernate5.LocalSessionFactoryBean注入到org.springframework.orm.hibernate5.HibernateTransactionManager让Spring帮我们管理事务

    <!--将事务交给Spring管理-->
    <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

最后,我们需要在配置文件中加入下面两个重要配置,一个是包扫描,另一个是注解驱动的yuan

TOKEN自定义注解 TOKEN自定义注解,用于防止重复提交的,直接应用就可以了! 立即下载

相关推荐

fMRI原始数据分割的笔记

好记性不如烂笔头_fMRI小白入门笔记

ZY_brain的博客 2897

项目中添加token校验的注解

实现并使用一个注解需要实现四步: 1、创建注解 2、创建拦截器,拦截注解并处理 3、注册拦截器 4、使用注解 1、创建一个注解 @Target(ElementType.METHOD) @Documented @Retention(RetentionPolicy.RUNTIME) public @interface TokenCheck { boolean required() default true; } 2、添加拦截器,实现HandlerInterceptor 接口 ..

sdmanooo的专栏 1498

RS422总线

①.RS422发送驱动器无高阻三态(浮空)状态RS422收发芯片,发送脚固定强驱动输出,永远钳位 A/B 差分电平,不能关断、不能悬空,只要芯片上电,TX+、TX - 就强制输出互补电压(一路高、一路低)。多条发送并联在同一组差分线上:两个驱动器一个拉 A 高、一个拉 A 低,B 线反向拉扯 → 电源→地大电流对灌,瞬间芯片过流发烫烧毁、总线电平短路错乱。注意:RS485 带DE/RE 收发使能脚:不用发送时可关闭驱动器,输出变成高阻浮空,让出总线,因此能多节点分时发送。③.多点通信方式,一主多从方式;

zhuimeng_1234的博客 223

@Transactional注解用法

checked异常(Exception): 表示无效,不是程序中可以预测的。比如无效的用户输入,文件不存在,网络或者数据库链接错误。这些都是外在的原因,都不是程序内部可以控制的。 必须在代码中显式地处理。比如try-catch块处理,或者给所在的方法加上throws说明,将异常抛到调用栈的上一层。 继承自java.lang.Exception(java.lang.RuntimeException除外)。 unchecked异常(RuntimeException): 表示错误,程序的逻辑错误。是Runtime

a984171281的博客 4880

R | 提取文件夹内栅格数据的最小值、最大值、标准差和平均值

各位同学好,我们长需要用长时间序列栅格数据的平均值做变量的时间变化分析,用代码能够帮助我们省下很多时间。

qq_48539301的博客 449

基于ADRC算法的多旋翼飞行器抗扰动控制实践

本文详细介绍了基于ADRC算法的多旋翼飞行器抗扰动控制实践,通过线性扩张状态观测器(LESO)实时估算风力等扰动,实现提前补偿,显著提升飞行稳定性。文章结合具体案例和工程实现技巧,展示了ADRC在突风条件下的优异表现,为无人机控制提供了高效解决方案。

weixin_29284885的博客 192

spring(转账为例)四种实现方式一

Spring事务管理的四种方式(以银行转账为例) 一、事务的作用 将若干的数据库操作作为一个整体控制,一起成功或一起失败。 原子性:指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 一致性:指事务前后数据的完整性必须保持一致。 隔离性:指多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。 持久性:指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,即时数据库发生故障也不应该对其有任何影响。 Spring提供了以下方法控制事务 a.

m0_56125938的博客 604

基于STM32的频率计(采用外部中断的方式)

前言 最近在了解电赛相关的东西,和指导老师交流一下,我决定先从最简单的频率计做起。 频率计是来检测信号的频率的,在做频率计的时候可以用信号发生器发出的信号来进行测试。 原理 这是最基础的方波,我们可以通过检测上升沿的方式来测量其频率。从周期的角度出发连续两个上升沿的时间就是这个方波的周期,那这个周期分之一就是这个方波的频率了。 在思考了一段时间~~(我是萌新。。)~~ 我觉得有两个方法可以实现,第一个是采用stm32定时器的输入捕获功能,第二个就是用外部中断来实现这个功能。正如标题,我这次采用外部中断的方

qq_45784922的博客 6171

重复提交、重复刷新、防止后退的问题以及处理方式

 重复提交、重复刷新、防止后退的问题以及处理方式一。前言你在任何一个比较专业的BBS都会看到这样的问题,即使你Google一下,也会发现有很多的人在关注和询问,但大家给出的解决方法却都是千差万别,(有的人主张采用脚本来解决;有的则想重定向到别的页面;有的则将此问题提升到Token的角度)为什么会有如此大的差异呢?二。问题场景首先,我们应该先了解为什么要处理这样的问题?或者专业一点就是它

johncools的博客 1728

Matt Pocock Skills — AI 编码代理技能包介绍与使用指南

《Matt Pocock Skills:AI编码代理技能包指南》 摘要: Matt Pocock Skills是一套开源AI编码代理技能包,旨在解决AI辅助开发中的四大痛点:需求理解偏差、token浪费、代码质量差和架构腐化。该技能包包含多种实用工具:/grill-with-docs用于需求对齐,/tdd实现测试驱动开发,/diagnose提供规范化调试流程,/triage管理issue生命周期。核心思想包括:通过拷问式对齐确保需求理解一致,建立共享领域语言提高沟通效率,快速反馈闭环加速开发,以及持续架构维

qq_45859163的博客 2221

2023年电工杯 | 2023年电工杯数学建模竞赛思路(A题、B题)

2023年电工杯 | 2023年电工杯数学建模竞赛思路(A题、B题)

前程算法屋的博客 5593

ModelAttribute,SessionAttributes,TransactionToken,custom error page

【代码】ModelAttribute,SessionAttributes,TransactionToken,custom error page。

weixin_43292547的博客 505

2023.03.27更新大麦网PC端抢购软件和使用教程

近期发现大麦网页端抢购页面悄然发生变化,之前可以在页面选择票价、档次,并且点击按钮进行购票,现在不行了,新的页面如下图所示。已经安全没有了点击按钮,因此,但是并不代表不能像以前之前那样。

猫敷雪 1万+

Spring的事务(Transaction)

Spring的事务(Transaction) 问题: 1、什么是事务? 事务是指一组SQL语句的集合,集合中有多条SQL语句,可以是insert、update、select、delete,希望这些SQL语句执行是一致的,作为一个整体执行。要么都成功,要么都失败。 2、什么时候想到使用事务? (1)当操作设计多个表,或者是多个SQL语句的insert、update、delete。需要保证这些语句都是成功才能完成功能,或者都失败是符合要求的。(要么都成功,要么都失败) (2)事务在java开发中如何运用?

陌守 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Spring事务(Transaction)

事务(Transaction)是基于关系型数据库(RDBMS)的企业应用的重要组成部分。在软件开发领域,事务扮演者十分重要的角色,用来确保应用程序数据的完整性和一致性。 事务具有 4 个特性:原子性、一致性、隔离性和持久性,简称为 ACID 特性。 原子性(Atomicity):一个事务是一个不可分割的工作单位,事务中包括的动作要么都做要么都不做。 一致性(Consistency):事务必须保证数据库从一个一致性状态变到另一个一致性状态,一致性和原子性是密切相关的。 隔离性(Isolation):一个事务的

洛卡JAVA架构师每日分享Java架构师知识 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Spring-Transaction事务原理解析(结合源码)

事务管理是应用系统开发中必不可少的一部分。**Spring 为事务管理提供了丰富的功能支持**。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;**声明式事务基于 AOP实现,将具体业务逻辑与事务处理解耦**。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件(xml)中做相关的事务规则声明,另一种是基于 @Transactional 注解的方式。本文将着重介绍基于 @Transactional 注解

一个小菜鸡罢了 2451

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Spring声明式事务注解之@EnableTransactionManagement

目录 1. 说明 2. 原理分析 3.AutoProxyRegistrar分析 4.ProxyTransactionManagementConfiguration分析 1. 说明 @EnableTransactionManagement声明在主配置类上,表示开启声明式事务,其原理是通过@Import导入TransactionManagementConfigurationSele...

luojinbai的专栏 1万+

Spring模块详解Ⅳ(Spring ORM和Spring Transaction)

对Spring框架中Spring ORM和Spring Transaction进行总结分析

AI+全栈,AI+应用,实操落地,前沿技术 2475

Spring注解驱动开发第34讲——你了解基于注解版的声明式事务吗?

不知不觉,时间已快过一个月了,而这个Spring注解驱动开发系列教程才写到第34讲,实在是说不过去,我向大家宣布一件事情,那就是: 我是一个傻逼! 我是一个傻逼! 我是一个傻逼! 我得承认这样一个事实,但无论如何抱怨,路还是要继续走下去,这可真是一件没有道理的事情。 好吧!回到正文,在这一讲中,我来向大家讲解一下声明式事务,也就是看看Spring用注解是如何来简化对数据库事务的开发的。 搭建声明式事务的环境 是个人都知道,在对数据库进行增删改操作时,必然是要使用到事务的。因此,接下来,我们就来搭建好声明

李阿昀的博客 2738

Spring声明式事务

同时,类级别标记的@Transactional注解中设置的事务属性也会延续影响到方法执行时的事务属性。编程式事务是指手动编写程序来管理事务,即通过编写代码的方式直接控制事务的提交和回滚。在 Java中,通常使用事务管理器(如Spring中的PlatformTransactionManager)来实现编程式事务。编程式事务的主要优点是灵活性高,可以按照自己的需求来控制事务的粒度、模式等等。使用声明式事务可以将事务的控制和业务逻辑分离开来,提高代码的可读性和可维护性。编程式事务需要手动编写代码来管理事务。

m0_50460160的博客 951

Spring 声明式事务讲解,和 @Transactional注解的用法

声明式事务是一种编程模型,用于在应用程序中管理数据库事务。在声明式事务模型中,开发人员只需通过注解或配置文件来定义事务的边界和属性,而无需编写复杂的事务管理代码。这样可以使开发人员专注于业务逻辑的实现,而不必过多关注事务管理的细节。

2301_77899321的博客 1069

【每天学点Spring】JDBC事务管理与Spring事务管理

Spring事务,其本质就是通过JDBC管理事务的,所以底层调用的是或。

x1ao_fe1的博客 1288

Spring声明式事务注解之@EnableTransactionManagement解析

这篇文章主要介绍了Spring声明式事务注解之@EnableTransactionManagement解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 Spring声明式事务注解之@EnableTransactionManagement 1. 说明 @EnableTransactionManagement声明在主配置类上,表示开启声明式事务,其原理是通过@Import导入TransactionManagementConfigurationSelector组件,然后又

code_forever_的博客 3316

`@Transactional` 注解深度解析:Spring 声明式事务的核心

本文深入解析Spring框架中的@Transactional注解,涵盖其核心特性与实现原理。该注解通过声明式方式简化事务管理,支持配置传播行为、隔离级别、超时设置等关键属性。其实现基于AOP代理机制,通过TransactionInterceptor拦截方法调用,配合PlatformTransactionManager完成事务启停。源码层面展示了注解属性的解析过程及事务拦截的核心逻辑,为开发者提供了高效的事务管理方案。

csdn_tom_168的博客 1260
上一篇: TCP/IP学习笔记-超时重传
下一篇: Spring学习笔记--父子容器详解
markliwei1
博客等级 码龄10年 26粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值