나는 이것이 최대 절전 모드에 처음이다 이것은 stackoverflow 내 첫 게시물입니다. 하이버 네이트 3.3.2 GA와 MySQL을 DB로 사용하고 있습니다.최대 절전 모드를 사용하여 MySql DB 테이블의 행 수준 잠금
나는 상태 = 'N'을 가지고있는 DB 테이블에 대한 기록을 읽고있다 :
여기 내 질문이다.
List sendSmsPropertiesList=hbSession.createQuery("from TSendSms where status='N' ").setMaxResults(1).list();
는 I 상태로 DB에서 레코드를 가져 SQL 이상 사용하여 동일한 테이블에 액세스하는 2 개 스레드가 = 'N'은 (예를 들어, 상태 3 개 기록 = 'N', 제 스레드 페치가 있는지 첫 번째 레코드와 두 번째 스레드가 두 번째 레코드를 가져와야 함). 그러나 둘 다 동일한 레코드를 가져오고 있습니다 (첫 번째 레코드). 여기에 한 번 쓰레드를 가져 오면 테이블 행에 자물쇠가 있어야합니다. 두 번째 쓰레드가 오면 두 번째 행으로 가야합니다.
위의 예를 도와 주시겠습니까?
미리 감사드립니다.
잠금은 행을 숨기지 않습니다. 잠금이 해제 될 때까지 스레드를 차단합니다. 당신이 묘사 한 바에 따르면 자물쇠는 필요 없다. –
안녕하세요, JB Nizet, 예, 현재 스레드가 트랜잭션을 완료 할 때까지 다른 스레드가 해당 행을 읽지 못하도록 차단해야합니다. – anil
http://docs.jboss.org/hibernate/orm/4.1/javadocs/org/hibernate/Query.html#setLockMode(java.lang.String, org.hibernate.LockMode) –