关于配置事务管理
2017-04-23 本文已影响0人
Draper
datasource 配置
<!--设置为只读状态,配置读写分离时,读库可以设置为true
在连接池创建后,会初始化并维护一定数量的数据库安连接
当请求过多时,数据库会动态增加连接数
当请求过少时,连接池会减少连接数至一个最小空闲值-->
<property name="defaultReadOnly" value="false" />
<!--在启动连接池处世创建的数据库连接,默认为 0-->
<property name="initialSize" value="5"/>
<!--设置数据库同一时间最大活跃连接默认为8,负数表示不闲置-->
<property name="maxActive" value="15"/>
<!--在连接池空闲时最大连接数,超过的会被释放,默认为 8,负数表示不闲置-->
<property name="maxIdle" value="10"/>
<!--空闲时的最小连接数,低于这个数量会创建新连接,默认为 0-->
<property name="minIdle" value="2"/>
<!--连接被用完是等待归还的最大等待时间,单位毫秒,超过时间抛异常,默认为无限等待-->
<property name="maxWait" value="10000"/>
Hibernate Session
<!--hibernate 配置会话工厂-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" lazy-init="false">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<props>
<!--MySQL 的方言-->
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
<!--漂亮的格式显示 SQL 语句-->
<prop key="hibernate.format_sql">true</prop>
<prop key="current_session_context_class">thread</prop>
</props>
</property>
<!--配置需要扫描的包路径,在该包下,下面的代码也是同样的原理-->
<!--<property name="packagesToScan" value="com.draper.domain"/>-->
<!--<!–-->
<property name="annotatedClasses">
<list>
<value>com.draper.domain.Admin</value>
</list>
</property>
<!--–>-->
</bean>
事务的传播性
|传播类型|传播效果|
|::|::|
|PROPAGATION_REQUIRED|如果存在一个事物,则支持当前事务,如果没有则开启|
|PROPAGATION_SUPPORTS|如果存在一个事务,则支持当前事务,如果没有事务,则非事务的执行|
|PROPAGATION_MANDATORY|如果存在一个事务,则支持当前事务,如果没有则抛出异常|
|PROPAGATION_REQUIRES_NEW|总是开启一个新事务,如果一个事务已经存在,则将事务挂起|
|PROPAGATION_NOT_SUPPORTED|总是非事务的执行,并挂起任何存在的事务|
|PROPAGATION_NEVER|总是非事务的执行,如果存在一个事物则抛出异常|
|PROPAGATION_NESTED|如果一个活动的事务存在,则运行在一个嵌套的事务中,如果没有活动的事务,则按 TransactionDefinition.PROPAGATION_REQUIRED 属性执行|
|传播特性|T1|T2|
|::|::|::|
|Required|无|T2|
|Required|T1|T1|
|RequiredNew|无|T2|
|RequiredNew|T1|T2|
|Supports|无|无|
|Supports|T1|T1|
|Mandatory|无|报错|
|Mandatory|T1|T1|
|NotSupport|无|无|
|NotSupport|T1|无|
|Never|无|无|
|Never|T1|报错|