读书人

spring在项目中现实用途

发布时间: 2012-12-14 10:33:08 作者: rapoo

spring在项目中实际用途

1、数据库连接池的托管、自动事务管理(不用在手动关闭session,和开启事务、持久化操作、提交事务)

2、aop的事务代理


spring管理事务一共有两种方式:

1、

<!-- 配置session工厂 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:Hibernate.cfg.xml</value>
</property>
</bean>
<!-- 配置hibernateTemplate -->
<bean name="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<!-- 读取sessionFactory -->
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 声明事务 -->
<bean name="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<!-- 读取sessionFactory -->
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 开启注解事务 -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="*"/>
<tx:method name="query*" read-only="true"/>
</tx:attributes>
</bean>

<!--注解可以被继承,可以添加到接口上

spring在项目中现实用途

如果不配置<tx:advice transaction-manager="txManager"><!-- 通知注解事务管理-->

<tx:attributes>
<tx:method name="*"/>
<tx:method name="query*" read-only="true"/>
</tx:attributes>

则上图中@Transactional注解也不会起作用

-->

2、为单个bean配置事务(aop事务代理进行自动事务管理,自动数据库连接关闭)

<!-- 配置一个业务逻辑Bean -->
<bean id="test" class="com.spring.tranProxy.PersonDaoImpl">
<property name="ds" ref="dataSource" />
</bean>

<!-- 为业务逻辑Bean配置事务代理 -->
<bean id="testTrans"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<!-- 为事务代理工厂Bean注入事务管理器 -->
<property name="transactionManager" ref="transactionManager" />
<property name="target" ref="test" />
<!-- 指定事务属性 -->
<property name="transactionAttributes">
<props>
<prop key="*">readOnly</prop>
</props>
</property>
</bean>


spring对数据库session的管理

观点:

1.使用getSession()返回session有两种情况。
a.当前线程有存在session,就直接返回。
b.当前线程中不存在session就重新创建一个。

如果spring配置了事务,那么session就不必关闭,在事务完成之后将被自动关闭。如果没有参与事务那就要调用session.close()关闭。

2.getSession()拿到的Session无论是否参与事务,Spring都不负责关闭,除非使用OpenSessionInView模式。



读书人网 >Web前端

热点推荐