阿錄幫幫忙—Hibernate與JdbcTemplate共享事務管理

【spring-application.xml配置】

<!-- 引入jdbc配置文件 -->
	<context:property-placeholder location="classpath:jdbc.properties" />
	<!-- 掃描文件(自動將所有層的類注入) -->
	<context:component-scan base-package="com.asiainfo.maven_hibernate_test" />
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
		init-method="init" destroy-method="close">
		<property name="driverClassName" value="${jdbc_driverClassName}" />
		<property name="url" value="${jdbc_url}" />
		<property name="username" value="${jdbc_username}" />
		<property name="password" value="${jdbc_password}" />
		<!-- 連接池最大使用連接數 -->
		<property name="maxActive" value="20" />
		<!-- 初始化連接大小 -->
		<property name="initialSize" value="1" />
		<!-- 獲取連接最大等待時間 -->
		<property name="maxWait" value="60000" />
		<!-- 連接池最大空閒 -->
		<!-- <property name="maxIdle" value="10" /> -->
		<!-- 連接池最小空閒 -->
		<property name="minIdle" value="3" />
		<!-- 自動清除無用連接 -->
		<property name="removeAbandoned" value="true" />
		<!-- 清除無用連接的等待時間 -->
		<property name="removeAbandonedTimeout" value="180" />
		<!-- 連接屬性 -->
		<property name="connectionProperties" value="clientEncoding=UTF-8" />
	</bean>
	<!-- hibernate session factory 定義 -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- 主要針對domain -->
		<property name="packagesToScan" value="com.asiainfo.maven_hibernate_test.domain" />
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">${hibernate.dialect}</prop>
				<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
				<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
				<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
			</props>
		</property>
	</bean>
	<!-- jdbcTemplate 定義 -->
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource" />
	</bean>
	<!-- 事物管理器定義 -->
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<property name="dataSource" ref="dataSource" />
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>
	<!-- 聲明式事物管理 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="do*" read-only="false" propagation="REQUIRED" />
			<tx:method name="add*" read-only="false" propagation="REQUIRED" />
			<tx:method name="save*" read-only="false" propagation="REQUIRED" />
			<tx:method name="create*" read-only="false" propagation="REQUIRED" />
			<tx:method name="update*" read-only="false" propagation="REQUIRED" />
			<tx:method name="delete*" read-only="false" propagation="REQUIRED" />
			<tx:method name="get*" read-only="true" />
			<tx:method name="query*" read-only="true" />
			<tx:method name="find*" read-only="true" />
			<tx:method name="*" read-only="true" />
		</tx:attributes>
	</tx:advice>
	<tx:annotation-driven transaction-manager="transactionManager" />
	<aop:config proxy-target-class="true">
		<aop:advisor advice-ref="txAdvice"
			pointcut="execution(* com.asiainfo.maven_hibernate_test.service.impl.*ServiceImpl.*(..))" />
	</aop:config>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章