Hibernate 主鍵的生成策略
首先區分什麼是自然主鍵和代理主鍵
1. 建立表的時候
* 自然主鍵:物件本身的一個屬性.建立一個人員表,每個人都有一個身份證號.(唯一的)使用身份證號作為表的主鍵.自然主鍵.(開發中不會使用這種方式)
* 代理主鍵:不是物件本身的一個屬性.建立一個人員表,為每個人員單獨建立一個欄位.用這個欄位作為主鍵.代理主鍵.(開發中推薦使用這種方式)
2. 建立表的時候儘量使用代理主鍵建立表
主鍵的生成策略
1. increment:適用於short,int,long作為主鍵.不是使用的資料庫自動增長機制.
* Hibernate中提供的一種增長機制.
* 先進行查詢 :select max(id) from user;
* 再進行插入 :獲得最大值+1作為新的記錄的主鍵.
* 問題:不能在叢集環境下或者有併發訪問的情況下使用.
2. identity:適用於short,int,long作為主鍵。但是這個必須使用在有自動增長資料庫中.採用的是資料庫底層的自動增長機制.
* 底層使用的是資料庫的自動增長(auto_increment).像Oracle資料庫沒有自動增長.
3. sequence:適用於short,int,long作為主鍵.底層使用的是序列的增長方式
* Oracle資料庫底層沒有自動增長,想自動增長需要使用序列.
4. uuid:適用於char,varchar型別的作為主鍵. * 使用隨機的字串作為主鍵.
5. native:本地策略.根據底層的資料庫不同,自動選擇適用於該種資料庫的生成策略.(short,int,long)
* 如果底層使用的MySQL資料庫:相當於identity.
* 如果底層使用Oracle資料庫:相當於sequence.
6. assigned:主鍵的生成不用Hibernate管理了.必須手動設定主鍵.
相關文章
- hibernate主鍵生成策略
- Hibernate框架的主鍵生成策略框架
- Java Hibernate 主鍵生成10大策略Java
- Hibernate主鍵策略
- 轉JPA實體註解與hibernate主鍵生成策略
- 資料庫主鍵 ID 生成策略資料庫
- Hibernate 自定義主鍵
- java主鍵生成Java
- 操作hibernate多主鍵的問題?
- Mybatis-Plus3.0預設主鍵策略導致自動生成19位長度主鍵id的坑MyBatisS3
- 操作hibernate多主鍵的問題?(2)
- 分散式主鍵生成分散式
- Kudu主鍵選擇策略
- Hibernate自定義產生主鍵方式
- HIBERNATE的自定義型別主鍵的對映??型別
- 請教Hibernate的多主鍵操作如何實現?
- hibernate複合主鍵查詢問題
- cqrs架構下的主鍵如何生成架構
- Laravel 中使用 Redis 生成自增主鍵LaravelRedis
- Mysql分庫分表的主鍵生成演算法MySql演算法
- Hibernate的查詢方式與策略
- hibernate 關係對映之 主鍵關聯一對一
- 生成按時間增長的全域性唯一主鍵
- MySQL 資料庫自增主鍵生成的優缺點MySql資料庫
- 主鍵與主鍵索引的關係索引
- 關於資料庫表記錄主鍵生成的問題?資料庫
- [求助]Hibernate自增長主鍵的設定問題和事務問題
- 【mybatis-plus】主鍵id生成、欄位自動填充MyBatis
- Hibernate效能優化策略 (網上找的)優化
- Oracle主鍵與複合主鍵的效能分析Oracle
- hibernate的hbm檔案生成問題
- Hibernate之自動生成工具
- 解密Kafka主題的分割槽策略:提升實時資料處理的關鍵解密Kafka
- 修改主鍵的SQLSQL
- MySQL主鍵的理解MySql
- 分庫分表的 9種分散式主鍵ID 生成方案,挺全乎的分散式
- ID生成策略——SnowFlake
- Oracle主鍵Oracle