Posted on 2009-12-24 22:04
leekiang 閱讀(295)
評(píng)論(0) 編輯 收藏 所屬分類:
spring
事務(wù)直接配到DAO上
<bean id="transactionManager"
?? ??? ?class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
?? ??? ?<property name="dataSource" ref="dataSource" />
?? ?</bean>
?? ?<bean id="baseTxProxy"
?? ??? ?class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
?? ??? ?lazy-init="true" abstract="true">
?? ??? ?<property name="transactionManager">
?? ??? ??? ?<ref bean="transactionManager" />
?? ??? ?</property>
?? ??? ?<property name="transactionAttributes">
?? ??? ??? ?<props>
?? ??? ??? ??? ?<prop key="update*">PROPAGATION_REQUIRED</prop>
?? ??? ??? ?</props>
?? ??? ?</property>
?? ?</bean>
?? ?<bean id="studentDaoProxy" parent="baseTxProxy">
?? ??? ?<property name="target">
?? ??? ??? ?<ref bean="studentDao" />
?? ??? ?</property>
?? ?</bean>
?? ?<bean id="studentDao" class="com.dao.StudentDaoImpl">
?? ??? ?<property name="dataSource" ref="dataSource" />
?? ?</bean>
?? ?
?? ?StudentDao st = (StudentDao) context.getBean("studentDaoProxy");
?? ?
?? ?兩個(gè)bean也可以合并為
?? ?<bean id="studentDao" parent="baseTxProxy">
?? ??? ?<property name="target">
?? ??? ??? ?<bean class="com.dao.StudentDaoImpl">
?? ??? ??? ??? ?<property name="dataSource" ref="dataSource" />
?? ??? ??? ??? ?<property name="kpiDao" ref="kpiDao" />
?? ??? ??? ?</bean>
?? ??? ?</property>
?? ?</bean>
?? ?StudentDao st = (StudentDao) context.getBean("studentDao");
?? ?上述這種方式必須使用接口,為什么。
?? ?
?? ?
?? ?第二種同樣必須用接口。配置起來(lái)比第一種麻煩
?? ??? ?<bean id="transactionManager"
?? ??? ?class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
?? ??? ?<property name="dataSource" ref="dataSource" />
?? ?</bean>
?? ?<bean id="transactionInterceptor"
?? ??? ?class="org.springframework.transaction.interceptor.TransactionInterceptor">
?? ??? ?<property name="transactionManager" ref="transactionManager" />
?? ??? ?<property name="transactionAttributes">
?? ??? ??? ?<props>
?? ??? ??? ??? ?<prop key="update*">PROPAGATION_REQUIRED</prop>
?? ??? ??? ?</props>
?? ??? ?</property>
?? ?</bean>
?? ?<bean id="studentDaoProxy"
?? ??? ?class="org.springframework.aop.framework.ProxyFactoryBean">
?? ??? ?<property name="target" ref="studentDao" />
?? ??? ?<property name="interceptorNames">
?? ??? ??? ?<list>
?? ??? ??? ??? ?<value>transactionInterceptor</value>
?? ??? ??? ?</list>
?? ??? ?</property>
?? ?</bean>
?? ?
?? ?<bean id="studentDao" class="com.dao.StudentDaoImpl">
?? ??? ?<property name="dataSource" ref="dataSource" />
?? ?</bean>
?? ?ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
?? ?StudentDao st = (StudentDao) context.getBean("studentDaoProxy");
?? ?
?? ?如果使用的都是接口,那么就不需要用cglib-nodep-2.1_3.jar
?? ?如果service調(diào)dao沒(méi)有用到接口,那么必須用cglib-nodep-2.1_3.jar
事務(wù)策略: 了解事務(wù)陷阱 http://www.ibm.com/developerworks/cn/java/j-ts1.html
事務(wù)策略: 高并發(fā)策略
http://www.ibm.com/developerworks/cn/java/j-ts5/index.html
這是一個(gè)系列.
http://beet.sourceforge.net
Beet records user behavior and performance data for your Spring-based Java application.? It can thus help you to analyze usage patterns and research production performance issues.