문제

@Entity
public class Person {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;

    private int salary;

    @Version
    private long version;

    // ...getters and setters
}
  1. 세터/getter를 만들어야합니까? version?
  2. 이 엔티티를 최대 절전 모드로 유지할 때이 값을 수동으로 설정할 필요가 없습니다.
  3. Spring 's와의 낙관적 동시성 검사를 사용하려면 무엇을 구성해야합니까? hibernateTemplate.saveOrUpdate? 모든 데이터베이스가 지원됩니까?
  4. 이 엔티티를 단위 테스트하는 방법은 무엇입니까? 내 데이터베이스에서 버전 필드를 보여주는 모든 레코드에 값이 0입니다.
  5. 전화 할거야 hibernateTemplate.saveOrUpdate 매번 버전 값을 증가 시켰습니까?
도움이 되었습니까?

해결책

내가 말할 것:

  1. 버전을 직접 할당 할 수 있으므로 설정/GET 버전이 필요합니다 (이전 데이터에서 새 인스턴스를 재현 할 때).
  2. 데이터베이스에서 인스턴스를 읽으면 필요하지 않습니다. (새로운 코드로 코드를 만들 때 다른 이야기가 될 것입니다).
  3. 나는 다른 것을 본다. 나는 데이터베이스에 문제가 없었습니다.
  4. 제 생각에는 단위 테스트가 데이터베이스를 사용하지 않으므로 데이터베이스와 관련된 테스트를 통합 테스트라고합니다. 느리기 때문에 너무 많은 것을 가지고 있지 않아야하며 실제로 코드를 테스트하지는 않지만 최대 절전 모드/드라이버/데이터베이스 코드를 더 많이 테스트하지 않아야합니다. 신뢰하거나 한 번만 테스트해야합니다. 모든 단체를 위해.
    버전 값이 0 이상을 보려면 트랜잭션에서 엔티티를 읽고/수정/업데이트하면 버전이 하나씩 증가합니다. 거래에서 나가고 다시하십시오. 가치가 증가합니다 ...
  5. 데이터베이스 행이 수정 될 때마다 버전이 증가합니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top