[/b][b]每一个方法执行都会应用事务,它回传的transactionAttribute实例的默认传播行为是PROPAGATION_REQUIRED,隔离层级为ISOLATION_REFAULE
<bean id="informationDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="proxyInterfaces">
<list>
<value>
com.gsvince.hibernate.Idao.IInformationDAO
</value>
</list>
</property>
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="informationDAO" />
</property>
<property name="transactionAttributeSource">
<ref bean="transactionAttributeSource"/>
</property>
</bean>
<bean id="transactionAttributeSource" class="org.springframework.transaction.interceptor.MatchAlwaysTransactionAttributeSource">
</bean>
也可以使用org.springframework.transaction.interceptor.DefaultTransactionAttribute,并设置自己的事务策略,之后设置给transactionAttributeSource,例如:
<bean id="myTransactionAttribute" class="org.springframework.transaction.interceptor.DefaultTransactionAttribute">
<property name="propagationBehaviorName"
value="PROPAGATION_REQUIRES_NEW"/>
<property name="isolationLevelName"
value="ISOLATION_REPEATABLE_READ"/>
</bean>
<bean id="transactionAttributeSource" class="org.springframework.transaction.interceptor.MatchAlwaysTransactionAttributeSource">
<property name="transactionAttribute"
ref="myTransactionAttribute"/>
</bean>
<bean id="informationDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="proxyInterfaces">
<list>
<value>
com.gsvince.hibernate.Idao.IInformationDAO
</value>
</list>
</property>
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="informationDAO" />
</property>
<property name="transactionAttributeSource"
ref="transactionAttributeSource"/>
</bean>
也可以使用org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource来指定某些方法要应用事务,以及要应用的事务策略,例如:
<bean id="transactionAttributeSource" class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource">
<property name="properties">
<props>
<prop key="edit*">PROPAGATION_REQUIRED</prop>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="informationDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="proxyInterfaces">
<list>
<value>
com.gsvince.hibernate.Idao.IInformationDAO
</value>
</list>
</property>
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="informationDAO" />
</property>
<property name="transactionAttributeSource"
ref="transactionAttributeSource"/>
</bean>
在NameMatchTransactionAttributeSource的"properties"属性上,可以指定方法名称与事务策略,方法名称的指定可以指定全名,也可以使用Wildcard来指定,例如上面的指定中,只要方法名以insert开头的都会应用相对应的事务策略。
分享到:
相关推荐
EJB事物详细讲解:TransactionAttributeType.MANDATORY;TransactionAttributeType.REQUIRED;TransactionAttributeType.REQUIRES_NEW;TransactionAttributeType.SUPPORTS;TransactionAttributeType.NOT_SUPPORTED...
1. 对在上下文中配置的属性的处理,这里涉及的类是 TransactionAttributeSourceAdvisor,这是一个通知器,用它来对属性值进行处理,属性信息放在 TransactionAttribute 中来使用,而这些属性的处理往往是和对切入点...
在Spring框架中,事务管理...例如,`PlatformTransactionManager`的实现类如何与`TransactionDefinition`和`TransactionStatus`交互,`TransactionInterceptor`如何利用`TransactionAttribute`来决定事务的边界,以及`...
首先,我们需要创建一个表示事务特性的自定义Attribute,例如`TransactionAttribute`。这个特性可以包含关于事务的配置信息,如隔离级别、是否只读等。下面是一个简单的示例: ```csharp using System; using ...
例如,`@TransactionAttribute(TransactionAttributeType.REQUIRED)`表示如果当前没有事务,容器会开始一个新的;`@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)`则会在新事务中执行该方法,即使...
Spring 对交易的支援 JDBC 编程式交易管理 JDBC 宣告式交易管理 交易的属性介绍 TransactionAttributeSource、 TransactionAttribute Hibernate 支援 Spring 整合了对 Hibernate 的设定...
4. **注解(Annotations)**:EJB3大量使用注解来声明组件的行为,如`@WebService`、`@TransactionAttribute`等,减少了XML配置文件的使用,提高了开发效率。 5. **依赖注入(Dependency Injection, DI)**:EJB3...
5. **-aspect-oriented programming (AOP) 支持**:EJB 3.0通过声明式事务管理(`@TransactionAttribute`)和安全访问控制(`@RolesAllowed`)实现了面向切面编程的思想,使得开发者无需编写过多的底层代码。...
EJB3提供了容器管理的事务(Container Managed Transactions),开发者只需在方法上添加`@TransactionAttribute`注解,如`@TransactionAttribute(TransactionAttributeType.REQUIRED)`,即可让容器自动处理事务的...
6. **事务管理(Transaction Management)**:EJB容器自动处理事务,可以根据业务需求通过注解如`@TransactionAttribute`来设置事务的属性,如REQUIRED、REQUIRES_NEW等。 7. **并发控制(Concurrency Control)**...
根据不同的方法注解,如`@TransactionAttribute(TransactionAttributeType.REQUIRED)`,容器会自动启动和管理事务。 7. **JAXB and JAX-RS**:EJB3.0经常与JAXB(Java Architecture for XML Binding)和JAX-RS...
6. **容器管理的事务(Container-Managed Transactions)**:EJB 3.0提供自动事务管理,开发者只需通过设置事务属性(如`@TransactionAttribute`),容器就会根据这些属性自动处理事务的开始、提交或回滚。...
- 容器管理的事务:EJB3.0支持声明式事务管理,开发者只需在接口或方法上添加@TransactionAttribute注解即可。 2. **Jboss与EJB3.0**: - JBoss AS (Application Server) 是一个开源的应用服务器,完全支持EJB3.0...
- **示例**:使用 `@TransactionAttribute` 注解控制事务属性: ```java @Stateless @TransactionAttribute(TransactionAttributeType.REQUIRED) public class MySessionBean { public void doSomething() { /...
在上述示例中,`@TransactionManagement`注解被用来指定事务管理策略,而`@TransactionAttribute`则定义了具体的方法事务属性。 调用EJB时,通常通过JNDI(Java Naming and Directory Interface)来查找并实例化EJB...
- EJB事务管理:EJB支持声明式事务,通过在方法上添加事务属性(如@TransactionAttribute)来定义事务边界。容器负责事务的开始、提交、回滚等操作,也可以使用编程式事务管理,由开发者显式控制。 总的来说,EJB...
在实际开发中,EJB还涉及到其他组件,如EntityBean(处理持久化数据)、MessageDrivenBean(处理消息队列)以及更多的接口和服务,如EJBContext(提供上下文信息)和TransactionAttribute(定义事务属性)。...
EJB3提供了自动的事务管理,开发者可以通过`@TransactionAttribute`注解指定事务属性,如REQUIRED、REQUIRES_NEW等,以控制事务的边界。 此外,EJB3还引入了依赖注入(Dependency Injection,DI)和面向切面编程...
通过`@TransactionAttribute`注解,开发者可以选择不同的事务策略,如REQUIRED、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER和SUPPORTS,无需手动管理事务开始和结束。 消息驱动Bean(MDB)在EJB 3.0中也得到了...
默认情况下,容器会自动为EJB方法提供适当的事务边界,开发者可以通过`@TransactionAttribute`注解来定制事务策略。 在《中文最新EJB3.0实例教程》中,你将学习如何创建和部署EJB3.0组件,如何使用JPA进行数据持久...