求教!Spring中的事务注册问题

bigdogLIU 2018-03-22 02:34:23
一直在看SSM框架,在配置事务的时候迷了,找了一份别人写的简单工程来看,现在是一个学生在线名片的系统,可以实现注册登录等功能,并且登录进去之后可以实现对个人通讯录的增删改查功能,但是在看他的配置文件时,却发现事务管理只配了insert和select,但是程序能够正常运行,求大神解释一下注册和不注册这个事务有什么区别???


<!-- 注册事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 注册事务通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="insert*" isolation="DEFAULT" propagation="REQUIRED"/>
<tx:method name="select*" isolation="DEFAULT" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<!-- aop配置 -->
<aop:config>
<aop:pointcut expression="execution(* *..service.*.*(..))" id="studentPointcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="studentPointcut"/>
</aop:config>
</beans>
...全文
739 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjsl__ 2018-03-30
  • 打赏
  • 举报
回复
事务是保证数据一致性的,要根据业务需要配置,这个配置文件的意思是service中以insert或select开头的方法开启事务,就是说如果出现了异常,会回滚 不配置的话,出现了异常不会回滚,至于为什么是insert,select,这个不是SQL语句中的insert,select,是service类中的方法名字,是自定义的,service类中的方法名字可以随便取,如read,write,add,等,根据业务对数据一致性的需要,在相关的方法上开启事务
bigdogLIU 2018-03-27
  • 打赏
  • 举报
回复
引用 5 楼 maradona1984 的回复:
[quote=引用 3 楼 bigdogLIU 的回复:] [quote=引用 2 楼 maradona1984 的回复:] 这种简单的项目估计连多次更新或者插入请求都没有,而且不出异常,也可以正常运行,你可以自己改成*
那我如果不进行这些事务注册的话,这个简单的程序可以运行么[/quote] 可以[/quote] 那具体这些事务的命名是要按照service中的命名来定么?
cowmail 2018-03-27
  • 打赏
  • 举报
回复
指的是匹配execution(* *..service.*.*(..))的相关包里的insert*/select*前缀的方法开启事务管理。具体要看这些方法里写的什么了
kingzhaoc 2018-03-27
  • 打赏
  • 举报
回复
这里的name=insert*/select*不是指service层类的方法名吗。
城南一休 2018-03-26
  • 打赏
  • 举报
回复
你可以将一系列的动作构成的一个整体看成事务,要么都成功,要么都失败。一个经典的例子就是转账问题,转账是一个事务,转账成功的标志是你的钱转出去而且对方也收到,这个事务就算成功,但是如果你的钱转出去了,对方没收到,对于你来说,你的操作是成功的,但是对方的操作是失败的,所以这个事务就是失败的。其实一般配置事务的话,涉及数据库的表的改动的操作,比如增删改的操作,一般是需要配置事务的,但是像查询的这种操作,一般不需要设置事务。
纯技术男人 2018-03-26
  • 打赏
  • 举报
回复
查询不用加事物,添加修改监听一下
沁海棠 2018-03-25
  • 打赏
  • 举报
回复
不是指注册了select 和 insert 开头的方法注册事务吗. 这和执行成功不成功没有什么必要的联系吧,事务是确保数据的有效性,
maradona1984 2018-03-23
  • 打赏
  • 举报
回复
引用 3 楼 bigdogLIU 的回复:
[quote=引用 2 楼 maradona1984 的回复:] 这种简单的项目估计连多次更新或者插入请求都没有,而且不出异常,也可以正常运行,你可以自己改成*
那我如果不进行这些事务注册的话,这个简单的程序可以运行么[/quote] 可以
dengjinhmm 2018-03-23
  • 打赏
  • 举报
回复
是否配置事务 不影响项目的运行
bigdogLIU 2018-03-22
  • 打赏
  • 举报
回复
引用 2 楼 maradona1984 的回复:
这种简单的项目估计连多次更新或者插入请求都没有,而且不出异常,也可以正常运行,你可以自己改成*
那我如果不进行这些事务注册的话,这个简单的程序可以运行么
maradona1984 2018-03-22
  • 打赏
  • 举报
回复
这种简单的项目估计连多次更新或者插入请求都没有,而且不出异常,也可以正常运行,你可以自己改成*
X元素 2018-03-22
  • 打赏
  • 举报
回复
例如你一段代码有两个语句操作数据库 a.save(id) b.save(id) 如果a.save(id)成功了,但b.save(id)失败了,spring事务可以a.save(id)的数据不commit,这样数据就不会出现问题

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧