|
真爱的事业和真正的爱情一生只有一次,都值得我们温柔地相待,因为那种感觉是永远都无法复制的, 这世界真正属于你的东西其实并不多,你不好好珍惜,它便会离你而去,包括机遇,包括爱情,包括生命。 不要找任何理由, 当幸福在你身边的时候就抓住它,你就一定会很幸福! |
时 间 记 忆 |
« | September 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | |
|
blog名称:玻璃杯中的花生壳 日志总数:162 评论数量:249 留言数量:1 访问次数:828542 建立时间:2004年11月4日 |
 | | |
|
|
事务管理的方式:编程式和声明式,spring推荐使用后一种方式。 事务管理的原理:Aop为普通java类封装事务控制,它是通过动态代理实现的,spring在这段时间内通过拦截器,加载事务切片。由于Aop的原理是动态加载(回去研究一下proxy动态加载)来进行事务控制的。事务管理的步骤(以hibernate为例):1.定义一个hibernate适用的事务管理器,将SessionFactory注入进去:<bean id="transactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property></bean>2.定义事务管理的策略:<bean id="transactionAttributeSource" class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource"> <property name="properties"> <props> <prop key="add"> PROPAGATION_REQUIRES_NEW </prop> </props> </property> </bean>还可以定义事务隔离程度和回滚3.定义一个事务管理器(动态加载来实现的)<bean id="studentManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="target"> <ref bean="studentManager"/> </property> <property name="transactionManager"> <ref bean="transactionManager"/> </property> <property name="transactionAttributeSource"> <ref bean="transactionAttributeSource"/> </property></bean>这个bean的外观是一个接口(StudentManagerInterface),我们指出了它的具体实现(studentManager),而且为它绑定了事务策略附A pring中的所有事务策略PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。 PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。 PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。 PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。附B Spring中所有的隔离策略:ISOLATION_DEFAULTISOLATION_READ_UNCOMMITEDISOLATION_COMMITEDISOLATION_REPEATABLE_READISOLATION_SERIALIZABLEAOP应用范围Authentication 权限Caching 缓存Context passing 内容传递Error handling 错误处理Lazy loading 懒加载Debugging 调试logging, tracing, profiling and monitoring 记录跟踪 优化 校准Performance optimization 性能优化Persistence 持久化Resource pooling 资源池Synchronization 同步Transactions 事务典型的hibenrnate事务管理<!-- Hibernate SessionFactory --><bean id="sessionFactory“ class="org.springframework.orm.hibernate.LocalSessionFactoryBean"> <property name="dataSource"><ref local="dataSource" /></property> <property name="mappingResources"> <list><!-- Add list of .hbm.xml files here --> <value>org/mzone/model/Tuser.hbm.xml</value> <value>org/mzone/model/Article.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">net.sf.hibernate.dialect.SybaseDialec</prop> <prop key="hibernate.show_sql">True</prop> </props> </property> </bean><!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) --> <bean id="transactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager"> <property name="sessionFactory"><ref local="sessionFactory" /></property> </bean> <bean id="baseTxProxy" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"><ref bean="transactionManager"/></property> <property name="target"> <ref local=" userManagerTarget " /> </property> <property name="transactionAttributes"> <props> <prop key="save*">PROPAGATION_REQUIRED</prop> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="remove*">PROPAGATION_REQUIRED</prop> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <bean id="userManagerTarget" class="org.mzone.service.impl.UserManagerImpl"> <property name="userDAO"><ref local="userDAO"/></property> <property name="articleDao"><ref local="articleDAO"/></property> </bean>userDAO和articleDao是接口 |
|
| | |
|