В прошлый раз, когда я создавал базу данных Oracle для системы, стратегия гибернации для генерации первичного ключа была SEQUENCE, и тогда я чувствовал себя очень уставшим, потому что не понимаю почему, oracle+sequence+trigger не может получить значение первичного ключа при добавлении новых данных.
На этот раз я сосредоточусь на этом, и есть две новые проблемы,
1。 Какая стратегия гибернирования генерации первичных ключей обеспечивает лучшую производительность;
2。 Стратегии генерации ключевых ключей должны быть в идеале между базами данных.
Все говорят о производительности, оракул использует последовательность, поэтому первичный ключ всё равно хочет генерироваться таким образом.
Затем есть первичный ключ для возврата новых данных
Родной Выберите одинаковую идентичность, последовательность или хило в соответствии с возможностями базовой базы данных;
То есть генерируется первичный ключ, который выбирается гибернацией.
Native и Denity — это стратегии генерации серийных номеров ID базы данных, Native is Hibernate выбирается и генерируется автоматически, Identity выбирается самостоятельно, Identity — MySQL, SQL2000 и другие методы генерации баз данных, а также есть последовательность Oracle, а другие методы генерации обычно автоматически выбираются Hibernate
Для баз данных, поддерживающих внутренние поля идентичности (DB2, MySQL, Sybase и MS SQL), можно использовать идентичность off Генерация ключевых слов. Для баз данных, поддерживающих внутренние последовательности (DB2, Oracle, PostgreSQL, Interbase, McKoi и SAP). DB), вы можете использовать генерацию ключевых слов в последовательности. Оба подхода требуют двух раз для вставки нового объекта SQL-запросы.
Я проверил больше информации в интернете, не знаю, где я её видел, эта стратегия генерации первичных ключей, если это mysql, он выберет auto_increment способ генерации первичного ключа; Если это Oracle, он выберет метод последовательности; Просто при использовании базы данных Oracle нужно создать hibernate_sequence, который зарезервирован Hibernate и сообщает об ошибке, если вы не собираете (не тестируете). |