Spring+hibernate 编程式事务问题

i03630215 2010-08-20 04:55:23
各位大侠:
首先我先申明一下,在我系统里最小的改动是加一个spring的编程事务管理,但是碰到问题,代码如下:

PlatformTransactionManager tm=(PlatformTransactionManager) ServiceUtil.getBean("transactionManager");
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
PlatformTransactionManager status = tm.getTransaction(def);
SessionFactory sessionFactory=(SessionFactory) ServiceUtil.getBean("sessionFactory");
Session session = sessionFactory.openSession();
....
session.save(obj);
tm.commit(status);


applicationContext.xml配置如下:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="myDataSource" />
</property>
<property name="configLocation">
<value>classpath:hib.cfg.xml</value>
</property>

</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>

最终事务没有成功提交,请高手指点。
...全文
137 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jandan_Me 2010-08-26
  • 打赏
  • 举报
回复
不太清楚事务
sebatinsky 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hardycheng 的回复:]

XML code


<!-- 配置事务的传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
……
[/Quote]
根据实际情况需要吧,有时候是不需要配置这些的,多调试一下,看情况。
longlonglong25 2010-08-23
  • 打赏
  • 举报
回复
报的什么错误???
selaven 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hardycheng 的回复:]
XML code


<!-- 配置事务的传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
……
[/Quote]

赞同2楼的说法,我平时配置事物也是这样的,没出现什么问题的,LZ试试
yylaob 2010-08-23
  • 打赏
  • 举报
回复
事务也不是很清楚~
路过~观摩~
cooljia 2010-08-23
  • 打赏
  • 举报
回复
应该是先打开 session,试试看下面这个顺序
opensession-> tm.getTransaction(def) -> session.save -> tm.commit
a154825321 2010-08-23
  • 打赏
  • 举报
回复
2楼说的很正确啊,我同样认为你的SPRING配置出错了.
guyuxuelang 2010-08-23
  • 打赏
  • 举报
回复
路过来学习,对事物一直不大了解
hardycheng 2010-08-23
  • 打赏
  • 举报
回复


<!-- 配置事务的传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- 那些类的哪些方法参与事务 -->
<aop:config>
<aop:pointcut id="ibizMethod" expression="execution(* my.ibiz.*.*.*(..))" />
<aop:advisor pointcut-ref="ibizMethod" advice-ref="txAdvice" />
</aop:config>


你应该没有配置上面的一些东东, 至少你的配置里面没有 事务作用的类或者方法,也就是说你只是配置一个事务管理,但是来管理谁没有指明。
xun13424006605 2010-08-23
  • 打赏
  • 举报
回复
路过、帮顶...

67,512

社区成员

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

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