Как управляются последовательности в JPA и Hibernate? - PullRequest
5 голосов
/ 21 января 2009

Я использую 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 при сохранении нового объекта этого класса:

  1. Почему SequenceGenerator (из javax.persistence) имеет значение по умолчанию allocSize, равное 50 вместо 1? Каковы интересы этого?
  2. Какой алгоритм по умолчанию используется Hibernate для расчета сгенерированного идентификатора? Кажется, что Hibernate использует значение, возвращаемое последовательностью, размещенной в моей базе данных Oracle, но затем изменяет его, прежде чем присвоить его моей сущности ...

1 Ответ

0 голосов
/ 11 февраля 2009
  1. Это из соображений производительности (предварительная выборка)
  2. Прочитайте исходный код спящего режима.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...