成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

別再用數據庫生成的ID了

開發 前端
很多人都曾經至少有一次利用數據庫為應用程序生成ID的經歷。但事實上,這種做法在開發應用程序過程中是大錯特錯,使用自動遞增的整數ID會則錯得更加離譜。

本文轉載自公眾號“讀芯術”(ID:AI_Discovery)。

很多人都曾經至少有一次利用數據庫為應用程序生成ID的經歷。但事實上,這種做法在開發應用程序過程中是大錯特錯,使用自動遞增的整數ID會則錯得更加離譜。

是時候徹底擺脫這個不良行為了。

可以肯定的是,這會與你在101 college平臺關系數據課上學到的知識,以及你在youtube平臺上觀看的無數個如何用TerribleIds ()創建表格的視頻形成鮮明對比。

用數據庫生成應用ID會造成什么問題?

首先,最大的問題是你把應用程序中一個極其重要的部分授權給第三方軟件,在授權第三方責任時,你已經失去了對這個應用程序的掌控權。

其次,在設計實體類時,你可能會使用不恰當的方法,因為你想讓它與一個永久框架更兼容,比如說C# .NET中的實體框架。初級程序員犯的最嚴重的一個錯誤就是使用public Id setter方法來設置ID。

別再用數據庫生成的ID了

第三,你突然要依靠第三方來給實體提供ID,這會把原本不復雜的單元測試變得復雜。假設你已經發現使用public ID setter本質上是一個嚴重的錯誤,而你又不想通過調用代碼來設置ID。創建的類看起來會如下所示:

別再用數據庫生成的ID了

你選擇的ORM仍然可以通過反射來設置id字段。要知道,有反射存在就沒有什么是真正安全的。

但該如何對此進行單元測試?實例化時將id字段設置為0。實例化多個TerribleBook會出現身份沖突情況,因為現在不止一個TerribleBook具有相同的ID,即便他們代表兩個不同的實體。

如何生成更合適的ID并追回授權?

方法其實非常簡單,看下面的代碼:

別再用數據庫生成的ID了

不是人人都能注意到TerribleBook到FixedBook之間的轉變,所以請認真閱讀這段代碼。

首先,ID由整數變成字符串,這樣可以更好地實現伸縮性,但一定要限制數據庫中字段的長度。永遠不要對已知長度的字段使用 VARCHAR(MAX)——它會占用內存。

然后將構造函數設為私有,并使用靜態工廠方法實例化新對象。這樣可以從調用者中抽象出實例化邏輯,甚至為我們提供了使用多態的機會——我們可能想返回某個Null對象而不是拋出。

注意,雖仍然把id當作構造函數參數,但是ID的生成和提供是由我們來決定的(在第18行),而不是數據庫。

Guid.NewGuid()。ToString("D")只能確保獲得連字符格式的GUID。筆者喜歡用GUID,但是你可以自由構建自己的ID,無論哪種ID都可以滿足你的業務和應用程序需求。

現在,我們拿回了控制權。

[[334004]]

圖源:unsplash

或許你會說:“但是實體將不再按順序存儲!”這完全正確,但沒什么好擔心的。初級開發人員喜歡有序存儲實體,即便這通常對業務不會產生任何影響。如果確實需要按順序存儲內容,只需創建一個日期時間列即可。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2025-05-15 03:00:00

2025-05-19 04:00:00

2020-12-04 10:05:00

Pythonprint代碼

2020-12-02 11:18:50

print調試代碼Python

2021-06-09 06:41:11

OFFSETLIMIT分頁

2020-12-07 06:05:34

apidocyapiknife4j

2023-10-26 16:33:59

float 布局前段CSS

2021-05-25 09:30:44

kill -9Linux kill -9 pid

2021-01-29 11:05:50

PrintPython代碼

2020-12-03 09:05:38

SQL代碼方案

2020-12-15 08:06:45

waitnotifyCondition

2025-01-03 08:13:08

2019-03-12 14:48:29

路由器XBOXPS4

2024-12-26 07:47:20

2022-01-27 07:48:37

虛擬項目Django

2020-05-19 17:09:33

Pandas大數據數據分析

2024-06-12 13:54:37

編程語言字符串代碼

2022-03-10 10:12:04

自動化腳本Bash

2022-10-27 21:34:28

數據庫機器學習架構

2023-06-26 08:20:02

openapi格式注解
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99这里只有精品视频 | 久草视| 亚洲在线看 | 亚洲精品自在在线观看 | 午夜影院在线免费观看视频 | 狠狠躁躁夜夜躁波多野结依 | 中文字幕日韩欧美 | 中文字幕不卡 | 欧美视频在线免费 | 99精品欧美一区二区三区综合在线 | 日韩中文字幕一区二区 | 日日夜夜精品视频 | 无毛av | 欧美亚洲综合久久 | 国产精品九九视频 | 日韩免 | 亚洲高清视频一区二区 | 亚洲人成人一区二区在线观看 | 中文字字幕在线中文乱码范文 | 久久久噜噜噜www成人网 | 免费久久视频 | wwwxxx国产 | 色综合99| 一区二区福利视频 | 日韩欧美在线播放 | 日本久久网 | 男女午夜免费视频 | 亚洲视频中文字幕 | 在线播放中文字幕 | 亚洲精品乱码久久久久久9色 | 成人在线视频免费观看 | 国产精品亚洲一区二区三区在线 | 日韩在线不卡视频 | 亚洲精品久久久久久久久久久久久 | 久久综合成人精品亚洲另类欧美 | 日韩欧美一区二区三区免费观看 | 一区二区三区四区电影视频在线观看 | 久草在线高清 | 中文欧美日韩 | 四季久久免费一区二区三区四区 | 亚洲国产精品久久久久婷婷老年 |