ssh 诡异事物配置 ,求解 这个事物是怎么搞的

rxw310915 2013-02-05 03:13:52
我在一个工程里找到的 ,跑的没问题,可以用。但是我要在里面加东西,事物加不上,看了原来工程的事物配置跟迷茫了,求解。原来工程配置如下:
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager" />
<!-- 配置事务拦截器bean -->
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value></value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
...全文
196 13 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lvzg_005 2013-03-05
引用 3 楼 rxw310915 的回复:
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" />在工程里没有任何地方引用,也没有注入datasource 。但是删除的话起到报错。我也不清楚人家是怎么搞的,我是在他的工程里加了些东西,但是我加的怎么加事物把我难住了。因为看原来工程的事物配置……
这段事务是使用代理,事务拦截器实现的,主要侧重点 <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <value></value> </list> </property> 、、、、、 上面的list中的value是需要代理的类,类的中方法就会被事务拦截,从而实现事务一致性处理。 而list中可以使用通配符形式,比如*service,或者*DAO等等。如果自己要添加新的类,必须注意这点,不然事务不起作用
  • 打赏
  • 举报
回复
rxw310915 2013-03-05
引用 11 楼 chenzhi246265 的回复:
引用 9 楼 rxw310915 的回复:问下,service 和dao 需要同时加事物么 事物只要dao加了就行了,至于你那个问题不知道你添加的东西要不要和transactionAttributes关联,很久没用spring,忘的差不多了
事物可以配在 service 层啊 ,那我service 层 同时又删除 更新 怎么办,不就得加上事物么, 在servise 层 加上事物 ,dao 就不用加了好像 ,我看这么弄了也没出啥问题
  • 打赏
  • 举报
回复
chenzhi246265 2013-02-06
引用 9 楼 rxw310915 的回复:
问下,service 和dao 需要同时加事物么
事物只要dao加了就行了,至于你那个问题不知道你添加的东西要不要和transactionAttributes关联,很久没用spring,忘的差不多了
  • 打赏
  • 举报
回复
蜗牛之履 2013-02-05
没看明白,不好意思,我自己的问题
  • 打赏
  • 举报
回复
rxw310915 2013-02-05
问下,service 和dao 需要同时加事物么
  • 打赏
  • 举报
回复
<prop key="find*">PROPAGATION_NOT_SUPPORTED</prop> <prop key="delete*">PROPAGATION_REQUIRED,PROPAGATION_SUPPORTS,PROPAGATION_REQUIRES_NEW</prop> <prop key="update*">PROPAGATION_REQUIRED,PROPAGATION_SUPPORTS,PROPAGATION_REQUIRES_NEW</prop> 这几种,你网上搜下如何配置。
  • 打赏
  • 举报
回复
rxw310915 2013-02-05
我现在想在我的一些service操作里加上事物,但是不知道怎么加了。例如如下service 方法: public void deleteImage(int id, String userid) { BkImage image = bkImageDAO.findById(id); Common.deleteFile(image.getPath()); bkImageDAO.delete(image); } 就是我的一些service方法里有多个 更新,删除,新增等操作的时候我怎么给他加上事物,我写的dao 是用的getHibernateTemplate()这个写的,感觉spring自己给加上事物了 , 请教 一下,我这改怎么写啊
  • 打赏
  • 举报
回复
rxw310915 2013-02-05
那是所有dao操作呢,还是包括service 里的操作也加上事物了
  • 打赏
  • 举报
回复
告诉你关键的就是在这里了<prop key="*">PROPAGATION_REQUIRED</prop>*代表所有的操作,CRUD
  • 打赏
  • 举报
回复
rxw310915 2013-02-05
而且我现在也不明白原来工程的事物是怎么应用上去的。我在网上查了许久也没有找打答案。求各位好心人解答啊
  • 打赏
  • 举报
回复
rxw310915 2013-02-05
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" />在工程里没有任何地方引用,也没有注入datasource 。但是删除的话起到报错。我也不清楚人家是怎么搞的,我是在他的工程里加了些东西,但是我加的怎么加事物把我难住了。因为看原来工程的事物配置读不明白,所以求解
  • 打赏
  • 举报
回复
求知路漫漫 2013-02-05
引用 1 楼 fangmingshijie 的回复:
这是spring的声明型事务配置方式。
这个没有弄过,楼主你的可以了吗? 我的疑问 transactionManager这个bean楼主好像没有在其它地方引用啊!难道spring的声明型事务不用在其它地方引用?
  • 打赏
  • 举报
回复
这是spring的声明型事务配置方式。 改这个就行了<prop key="*">PROPAGATION_REQUIRED</prop> key属性确定代理应该给哪个方法增加事务行为。这样的属性最重要的部份是传播行为。有以下选项可供使用: PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。 PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。 PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。 PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。 PROPAGATION_NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。
  • 打赏
  • 举报
回复
相关推荐
发帖
Java EE
加入

6.7w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
申请成为版主
帖子事件
创建了帖子
2013-02-05 03:13
社区公告
暂无公告