美文网首页
关于配置事务管理

关于配置事务管理

作者: Draper | 来源:发表于2017-04-23 21:55 被阅读0次

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

    相关文章

      网友评论

          本文标题:关于配置事务管理

          本文链接:https://www.haomeiwen.com/subject/omyyzttx.html