关于配置事务管理

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|报错|

上一篇下一篇

猜你喜欢

热点阅读