Spring 使用Hibernate事务管理:update等操作无效果问题(1)

| name | 是 |   |

与事务属性关联的方法名。通配符(*)可以用来指定一批关联到相同的事务属性的方法。 如:'get*''handle*''on*Event'等等。

|

| propagation | 不 | REQUIRED | 事务传播行为

REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。

SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。

MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。

REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。

NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。

|

| isolation | 不 | DEFAULT | 事务隔离级别 |

| timeout | 不 | -1 | 事务超时的时间(以秒为单位) |

| read-only | 不 | false | 事务是否只读? |

| rollback-for | 不 |   |

将被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException,ServletException'

|

| no-rollback-for | 不 |   |

被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException

|

实例:(详细列举了各类配置方式)


在spring配置文件中添加如下代码

<bean id=“transactionManager”

class=“org.springframework.orm.hibernate4.HibernateTransactionManager”>

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用HibernateSpring事务管理器时,可以使用TransactionProxyFactoryBean和DataSourceTransactionManager两个类。在配置时,需要在Spring的配置文件中定义TransactionProxyFactoryBean,并将其与DataSourceTransactionManager关联。 具体配置步骤如下: 1. 配置数据源 在Spring的配置文件中,需要配置数据源。例如: ```xml <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="root"/> </bean> ``` 2. 配置事务管理器 在Spring的配置文件中,需要配置DataSourceTransactionManager作为事务管理器。例如: ```xml <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> ``` 3. 配置TransactionProxyFactoryBean 在Spring的配置文件中,需要配置TransactionProxyFactoryBean,它用于创建代理对象并将事务管理器与代理对象关联。例如: ```xml <bean id="userService" class="com.example.UserService"> <property name="userDao" ref="userDao"/> </bean> <bean id="userDao" class="com.example.UserDao"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="txProxyTemplate" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager" ref="transactionManager"/> <property name="target" ref="userService"/> <property name="proxyInterfaces" value="com.example.UserService"/> <property name="transactionAttributes"> <props> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> ``` 在上面的配置中,txProxyTemplate是一个TransactionProxyFactoryBean对象,它将userService作为目标对象,并将其与transactionManager关联。同时,它还指定了代理对象要实现的接口和事务属性。 4. 使用代理对象 在使用事务时,需要使用TransactionProxyFactoryBean创建的代理对象。例如: ```java ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml"); UserService userService = (UserService) context.getBean("txProxyTemplate"); userService.updateUser(user); ``` 以上就是HibernateSpring同时使用TransactionProxyFactoryBean和DataSourceTransactionManager事务管理器的配置方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值