spring只读的设置
because:jdbc的connection可以通过调用setReadOnly(true)来切换到只读事务模式上来,但是大多数jdbc driver会忽略掉它。
so:
对于只读来说,事务的传播属性应设为:PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。
对只读就没必要起事务了,如果是外层已有事务,那就在事务中运行吧。
起事务会起日志(以备回滚)等操作带来不必要开销。
so why?
那为什么不对只读事务什么都不设哪。而通常却设成:
PROPAGATION_SUPPORTS,readOnly
据说是因为这样设可以优化hibernate,使其never flush,但是事务管理器应该配成:
HibernateTransactionManager而非DataSourceTransactionManager.