JPA @version : 사용 방법?
문제
@Entity
public class Person {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private int salary;
@Version
private long version;
// ...getters and setters
}
- 세터/getter를 만들어야합니까?
version
? - 이 엔티티를 최대 절전 모드로 유지할 때이 값을 수동으로 설정할 필요가 없습니다.
- Spring 's와의 낙관적 동시성 검사를 사용하려면 무엇을 구성해야합니까?
hibernateTemplate.saveOrUpdate
? 모든 데이터베이스가 지원됩니까? - 이 엔티티를 단위 테스트하는 방법은 무엇입니까? 내 데이터베이스에서 버전 필드를 보여주는 모든 레코드에 값이 0입니다.
- 전화 할거야
hibernateTemplate.saveOrUpdate
매번 버전 값을 증가 시켰습니까?
해결책
내가 말할 것:
- 버전을 직접 할당 할 수 있으므로 설정/GET 버전이 필요합니다 (이전 데이터에서 새 인스턴스를 재현 할 때).
- 데이터베이스에서 인스턴스를 읽으면 필요하지 않습니다. (새로운 코드로 코드를 만들 때 다른 이야기가 될 것입니다).
- 나는 다른 것을 본다. 나는 데이터베이스에 문제가 없었습니다.
- 제 생각에는 단위 테스트가 데이터베이스를 사용하지 않으므로 데이터베이스와 관련된 테스트를 통합 테스트라고합니다. 느리기 때문에 너무 많은 것을 가지고 있지 않아야하며 실제로 코드를 테스트하지는 않지만 최대 절전 모드/드라이버/데이터베이스 코드를 더 많이 테스트하지 않아야합니다. 신뢰하거나 한 번만 테스트해야합니다. 모든 단체를 위해.
버전 값이 0 이상을 보려면 트랜잭션에서 엔티티를 읽고/수정/업데이트하면 버전이 하나씩 증가합니다. 거래에서 나가고 다시하십시오. 가치가 증가합니다 ... - 데이터베이스 행이 수정 될 때마다 버전이 증가합니다.
제휴하지 않습니다 StackOverflow