Я использую Hibernate в своем проекте, и многие из моих сущностей используют последовательность для своих технических ключей.
Например:
@Entity
@Table(name = "T_MYENTITY")
@SequenceGenerator(name = "S_MYENTITY", sequenceName = "S_MYENTITY")
public class MyEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "S_MYENTITY")
@Column(name = "MY_ENTITY_ID")
private Long entityId;
...
}
У меня есть два вопроса об идентификаторе, сгенерированном Hibernate при сохранении нового объекта этого класса:
- Почему SequenceGenerator (из javax.persistence) имеет значение по умолчанию allocSize, равное 50 вместо 1? Каковы интересы этого?
- Какой алгоритм по умолчанию используется Hibernate для расчета сгенерированного идентификатора? Кажется, что Hibernate использует значение, возвращаемое последовательностью, размещенной в моей базе данных Oracle, но затем изменяет его, прежде чем присвоить его моей сущности ...