최대 절전 모드로 데이터베이스에 수행 된 쿼리 양에 문제가 있습니다. 다음은 간단한 선택을하는 데이터베이스 (MySQL은 5.1을 사용) 내 쿼리 로그입니다 : 내가 아는 내가 1로 다음 0으로 자동 커밋을 설정하고에 대해 많이 읽은데이터베이스에 대한 최대 절전 모드
111125 7:18:30
27 Query SET autocommit=0
27 Query SELECT @@session.tx_isolation
27 Query select this_.id as id34_0_, this_.media_id as media3_34_0_, this_.message as message34_0_, this_.user_id as user4_34_0_ from notifications this_
27 Query rollback
27 Query SET autocommit=1
그 연결의 기본 1이고이 동작을 변경할 수 없습니다. SET autocommit = 0을 실행할 수 있지만 결과는 같습니다.
어쨌든 이러한 쿼리를 피할 수 있습니까? SELECT @@ session.tx_isolation이 발생하고 롤백되는 이유를 모르겠습니다. 트랜잭션을 사용할 때 커밋을 한 다음 롤백합니다. 롤백이 항상 케이블로 연결된 이유를 잘 모릅니다.
고맙습니다.
내 conf의 : 봄 2.5.6, 3.6.0 최대 절전 모드, MySQL은 5.1
datasoure.xml :
<bean id="dataSource" destroy-method="close"
class="org.apache.commons.dbcp.BasicDataSource">
<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="initialSize" value="3" />
<property name="maxActive" value="20" />
<property name="minIdle" value="3" />
<property name="poolPreparedStatements" value="false" />
<property name="defaultAutoCommit" value="false" />
<property name="defaultTransactionIsolation" value="4" />
</bean>
트랜잭션 관리자 정의 :
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
UPDATE : 새 속성을 설정하여 롤백을 제거하도록 관리 됨
<property name="defaultReadOnly" value="true" />
하지만 문제는 이제 SQLException을 제공하는 db에 대한 트랜잭션 주석 (readOnly = false)을 설정했는지에 관계없이 수정할 수 없다는 것입니다. 이 등록 정보는 읽기 전용으로 연결을 true로 설정합니다. 나는 이것을 HibernateTemplate으로 할 수있는 방법이 없다고 생각한다.
내부 코드 직조를 위해 aspectj 트랜잭션을 사용합니다.
<aop:aspectj-autoproxy proxy-target-class="true" />
거래가 실패합니다! Spring 컨텍스트에서 트랜잭션 관리자를 활성화 했습니까? 그리고 로그는 정상이며 내 역할은 롤백을 제외하고는 비슷합니다. – madhead
그것은 단지 선택이고 @transactional 어노테이션이 없습니다. 모든 것이 거래로 취급되고있는 것 같습니다. – Gonzalo
원시 DB 수준을 의미합니다 : 27 쿼리 롤백. 트랜잭션을 롤백합니다. 삽입 또는 업데이트가 올바르게 작동합니까? – madhead