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