ssh整合中事物的配置
初学ssh整合对大分人来说ssh的配置是一件让人很头疼的事,加上最新版本的教程又少,在经过多次尝试之后把事物的配置做如下总结,希望对初学者有所帮助,如有不对的地方请多指教:
我用的是:myEclipse9.0+sqlserver2000+hibernate4.1.6+struts2.3.4.1+spring3.1.1
整合中对事物的配置有三种:
1.使用hibernate进行事物管理 :
<!-- 数据源 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"></property><property name="url" value="jdbc:jtds:sqlserver://localhost:1433;DatabaseName=RegisterSystem"></property><property name="username" value="sa"></property><property name="password" value="admin"></property></bean> <!-- sessionFactory --><bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource"><ref bean="dataSource" /></property><!-- mapping --><property name="mappingResources"><list><value>cn/ts/entity/AdminUser.hbm.xml</value></list></property><!-- hibernate --><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop><prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext </prop><!--<prop key="hibernate.cache.use_query_cache">true</prop> <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> <prop key="hibernate.cache.use_second_level_cache">true</prop> --></props></property><!-- 事物 --></bean><!-- Transaction manager for a single JDBC DataSource --><bean id="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean> <!-- 需要引入aop的命名空间 --> <aop:config> <!-- 切入点指明了在执行Service的所有方法时产生事务拦截操作 --> <aop:pointcut id="daoMethods" expression="execution(* cn.ts.*.*(..))" /> <!-- 定义了将采用何种拦截操作,这里引用到 txAdvice --> <aop:advisor advice-ref="transactionManager" pointcut-ref="daoMethods" /> </aop>
2.利用JDBC数据源进行事物的管理
<!-- datasource --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"></property> <property name="url" value="jdbc:jtds:sqlserver://localhost:1433;DatabaseName=RegisterSystem"></property> <property name="username" value="sa"></property> <property name="password" value="admin"></property> </bean> <!-- sessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <!-- hibernate --> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext </prop> <!--<prop key="hibernate.cache.use_query_cache">true</prop> <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> <prop key="hibernate.cache.use_second_level_cache">true</prop> --> </props> </property> <!-- mapping --> <property name="mappingResources"> <list> <value>cn/ts/entity/AdminUser.hbm.xml</value> </list> </property> <!-- transaction --> </bean> <!-- Transaction manager for a single JDBC DataSource --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 需要引入aop的命名空间 --> <aop:config> <!-- 切入点指明了在执行Service的所有方法时产生事务拦截操作 --> <aop:pointcut id="daoMethods" expression="execution(* cn.ts.*.*(..))" /> <!-- 定义了将采用何种拦截操作,这里引用到 txAdvice --> <aop:advisor advice-ref="transactionManager" pointcut-ref="daoMethods" /> </aop:config>
3.使用JTA