@TableGenerator를 사용할 때 id가 1, 2, ...에서 32, xxx, 65, xxx ...로 점프하지 않도록하려면 allocationSize = 1을 추가해야하는 이유는 무엇입니까?@TableGenerator를 지정하지 않을 때 GeneratedValue 점프 (strategy = GenerationType.TABLE)의 원인은 무엇입니까?
allocationSize를 지정해야하는 이유가 있습니까?
이 조각은 여기에 제대로 시퀀스 식별자
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "account_generator")
@TableGenerator(name = "account_generator", initialValue = 1, allocationSize = 1)
private Long id;
1의 블록 크기를 사용할 때 객체를 유지할 때 성능이 저하된다는 사실을 알고 있어야합니다. – Justin
@Justin : 블록 크기를 1로 지정하면 성능이 저하되는 이유는 무엇입니까 ?? –
@n_g : 새로운 객체가 모두 유지되기 위해서는 id가 필요하므로, hibernate는 id 테이블에 대한 select와 update를 수행한다. 블록 크기를 늘리면이 블록 크기만큼의 ID만큼 캐시 (즉 예약)를 최대 절전 모드로 설정하고이 캐시를 모두 사용하면 id 테이블 만 쿼리/업데이트합니다. – rudolfson