數據庫操作和ORM(對象關系映射)框架.creat insert .save區別

?

1.?.create

  • 用途.create?方法通常用于創建一個新的實體(Entity)實例,并為其屬性設置初始值。這個方法不會立即將實體保存到數據庫中,而是返回一個配置好的實體實例,該實例可以被進一步修改或用于后續操作。
  • 行為.create?方法只是在內存中創建了一個實體的副本,沒有與數據庫進行交互。它通常返回一個實體類的實例,該實例的狀態是“新的”(即尚未持久化到數據庫)。

2.?insert(概念上)

  • 用途insert?這個詞通常用于描述將新數據直接插入到數據庫表中的操作。然而,在ORM框架中,insert?可能不是直接暴露給開發者使用的方法名,而是框架內部實現的一部分。開發者通常會通過調用?.save?或其他類似方法來觸發插入操作。
  • 行為:如果直接對應到數據庫操作,insert?會將一行新數據添加到表中。在ORM中,這通常是通過調用?.save?方法(在實體狀態為“新”的情況下)來間接實現的。

3.?.save

  • 用途.save?方法用于將實體實例的狀態保存到數據庫中。如果實體是新的(即之前從未被保存到數據庫中),那么.save?方法會執行插入操作。如果實體已經存在于數據庫中(即它有一個非空的ID或主鍵),那么.save?方法會執行更新操作,以反映實體的當前狀態。
  • 行為.save?方法會檢查實體的狀態,并據此決定是執行插入操作還是更新操作。它會與數據庫進行交互,以確保實體的狀態與數據庫中的記錄保持一致。

數據庫操作案例

?登録??create? ??insert
? ? const ooo = AppDataSource.getRepository(ooo).create({
? ? ? appId: request.appId,
? ? ? oooId: request.oooId,
? ? ? oooName: request.oooName,
? ? ? oooTicketKeepUpperLimit: request.oooTicketKeepUpperLimit ?? undefined,
? ? ? dailyShareUpperLimit: request.dailyShareUpperLimit ?? undefined,
? ? ? dailyoooTicketAutomaticGrantNumber:
? ? ? ? request.dailyoooTicketAutomaticGrantNumber ?? undefined,
? ? ? perShareoooTicketGrantNumber:
? ? ? ? request.perShareoooTicketGrantNumber ?? undefined,
? ? ? oooStartdate: request.oooStartdate ?? NULL_DATE,
? ? ? oooEnddate: request.oooEnddate ?? NULL_DATE,
? ? ? itemExchangeStartdate: request.itemExchangeStartdate ?? NULL_DATE,
? ? ? itemExchangeEnddate: request.itemExchangeEnddate ?? NULL_DATE,
? ? ? attentionText: request.attentionText,
? ? });

? ? CommonUtils.outputDBLog(logger, 'ooo', 'insert', ooo);

? ? await AppDataSource.getRepository(ooo).insert(ooo);

更新??save

? ? oooInfo.itemExchangeEnddate =
? ? ? request.itemExchangeEnddate != undefined
? ? ? ? ? request.itemExchangeEnddate
? ? ? ? : oooInfo.itemExchangeEnddate;

? ? oooInfo.attentionText =
? ? ? request.attentionText != undefined
? ? ? ? ? request.attentionText
? ? ? ? : oooInfo.attentionText;

? ? CommonUtils.outputDBLog(logger, 'ooo', 'save', oooInfo);
? ? await AppDataSource.getRepository(ooo).save(oooInfo);

總結

  • .create?用于在內存中創建新的實體實例,不會立即與數據庫交互。
  • insert(概念上)是數據庫操作,用于將新數據添加到表中,但在ORM中通常通過?.save?方法間接實現。
  • .save?用于將實體實例的狀態保存到數據庫中,根據實體的狀態執行插入或更新操作。

在實際開發中,你會更多地使用?.create?來創建新的實體實例,并使用?.save?來將這些實例保存到數據庫中。而?insert?這個詞更多地是在討論數據庫操作或ORM框架的內部機制時使用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44743.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44743.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44743.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

企業網站被攻擊的常見方式是什么,該如何去做防護

隨著互聯網的普及和人們對網絡使用的增加,網站安全問題變得越來越突出。無論是個人還是企業,都需要了解并采取措施來保護自己的網站和用戶數據的安全。本文介紹常見的網站安全攻擊方式、潛在危害及其預防措施,幫助全面了解網站安全的各個方面…

Vue的常見指令

目錄 1.v-bind 2. class綁定 3.style綁定 4.v-if/v-show 1.v-bind v-bind指令用于綁定屬性 可以簡寫成 “ &#xff1a;” 它的作用就是我們可以動態的定義屬性的值&#xff0c;比如常見的<img src "1.jpg"> 我們如果想要修改圖片就需要獲取到DOM對象&am…

新興市場游戲產業爆發 傳音以技術搶抓機遇

隨著年輕人口的增加以及互聯網的普及&#xff0c;非洲、中東等新興市場正迎來游戲產業的大爆發&#xff0c;吸引著全球游戲企業玩家在此開疆辟土。中國出海企業代表傳音以新興市場需求為中心&#xff0c;秉持本地化創新理念不斷加強游戲等關鍵領域技術攻關憑借移動終端設備為全…

藍卓創始人褚健:工業互聯網平臺技術賦能中小企業數字化轉型的實施路徑

工業4.0是由工業軟件驅動的工業革命&#xff0c;與傳統厚重的工業軟件不同&#xff0c;supOS就好比嵌入工廠的“安卓系統”。如果把一個工廠當作一臺手機&#xff0c;因為有安卓或蘋果開放的操作系統&#xff0c;吸引了全世界聰明的人開發了大量APP供人們使用&#xff0c;手機才…

Backend - visual studio 安裝配置運行

目錄 一、安裝 &#xff08;一&#xff09;visual studio的內存需求很大&#xff01; &#xff08;二&#xff09;自定義工具和SDK的安裝位置 1. 菜單欄搜索regedit&#xff0c;進入注冊表編輯器 2. 修改SharedInstallationPath項的路徑 3. 重啟電腦 4. 重新打開visual studio …

物聯網系統中市電電量計量方案(二)

上文我們主要介紹了電量計量中最重要的組成部分——電量計量芯片&#xff08;如果沒有閱讀該文章的&#xff0c;可以點擊這里&#xff09;。本文會再為大家介紹電量計量的另外一個組成部分——電流互感器。 電流互感器的定義 電流互感器是一種可將一次側大電流轉換為二次側小電…

智慧校園科研管理:論文管理提升學術影響力

在智慧校園科研管理平臺中&#xff0c;論文信息管理模塊扮演著連接學術創新與管理效率的橋梁角色&#xff0c;它精心設計了一系列功能&#xff0c;旨在促進學術成果的高效記錄、跟蹤、分享與評估&#xff0c;為科研工作者、管理人員及全體師生構建了一個協同合作的學術生態環境…

printJS實現打印圖片和pdf

下載依賴 npm install print-js --save 引入 import printJS from print-js <el-dialog title"提示" :visible.sync"dialogVisible" width"30%" :before-close"handleClose"><span slot"footer" class"dia…

L1和L2正則化的區別是什么?

L1和L2正則化的區別是什么&#xff1f; L1和L2正則化都是機器學習中用于防止過擬合的技術&#xff0c;它們通過向模型的損失函數添加一個懲罰項來鼓勵模型參數的稀疏性或平滑性。 L1 正則化&#xff08;也稱為 Lasso 正則化&#xff09;&#xff1a; 它對模型的權重施加一個…

應用TensorFlow簡單工作流程

TensorFlow 是一個開源的機器學習框架&#xff0c;由 Google 的 Google Brain 團隊開發。它提供了一個靈活的、強大的生態系統來構建和部署機器學習模型&#xff0c;無論是用于研究還是生產環境中。TensorFlow 的設計目標是使構建和訓練深度學習模型變得容易&#xff0c;同時保…

藍卓創始人褚健:未來工廠需要一個“工業安卓”

作為國內自動控制的科學家&#xff0c;過去近三十年的時間&#xff0c;褚健教授一直服務于化工行業、煉油石化等流程工業領域。褚健表示&#xff0c;因為涉及到安全生產和環保要求&#xff0c;流程工業企業的自動化水平高一些&#xff0c;但總體來看&#xff0c;目前中國大部分…

原生小程序生成二維碼并保存到本地

需求&#xff1a;我要在一個頁面中生成一個二維碼&#xff0c;并且這個二維碼可以長按保存到本地或者發送給好友&#xff1b; 我這里是將生成的canvas二維碼轉換成圖片&#xff0c;利用長按圖片進行保存或轉發 效果圖&#xff1a; 第一步先下載對應的包&#xff1a; npm instal…

防火墻綜合實驗1

實驗拓撲圖&#xff1a; 實驗需求&#xff1a; 1、DMZ區內的服務器&#xff0c;辦公區僅能在辦公時間內(9:00-18:00)可以訪問&#xff0c;生產區的設備全天可以訪問。 2、生產區不允許訪問互聯網&#xff0c;辦公區和游客區允許訪問互聯網。 3、辦公區設備10.0.2.10不允許訪問…

rancher管理多個集群

一、rancher部署 單獨部署到一臺機器上&#xff0c;及獨立于k8s集群之外&#xff1a; 刪除所有yum源&#xff0c;重新建yum源&#xff1a; # 建centos7.9的yum源 # cat CentOS-Base.repo # CentOS-Base.repo # # The mirror system uses the connecting IP address of the …

OR-152 IGBT光耦系列

●緩沖邏輯類型&#xff08;圖騰柱輸出&#xff09; ●輸出峰值電流&#xff1a; 2.5 A &#xff08;最大值&#xff09; ●電源電流&#xff1a; 3 mA &#xff08;最大值&#xff09; ● 電源電壓&#xff1a; 10 至 30 V ●閾值輸入電流&#xff1a; 7.5 mA&#xf…

Java面向對象進階篇綜合訓練(附帶全套源代碼及逐語句分析)->基于javabeen

一、前言 面向對象這一塊也要結束了&#xff0c;不知道讀者們掌握的如何呢。不過面向對象的路程遠不止于此&#xff0c;可以利用面向對象來做一些小型的系統來鞏固一下。接下來就進入新的章節了&#xff0c;回顧一下這已經是第五天了&#xff0c;之前說的7天拿下java還是太過于…

常用的Redis命令介紹

常用的Redis命令介紹 Redis 是一個高性能的鍵值存儲數據庫&#xff0c;支持多種數據結構&#xff0c;如字符串&#xff08;String&#xff09;、哈希&#xff08;Hash&#xff09;、列表&#xff08;List&#xff09;、集合&#xff08;Set&#xff09;和有序集合&#xff08;S…

51單片機:使用蜂鳴器演奏《盜將行》(附代碼詳解)

一、功能實現&#xff1a; 二、代碼內容&#xff1a; 主函數.c #include <REGX52.H> #include "Delay.h" #include "Timer0.h"sbit BuzzerP2^5;#define SPEED 500 //原先默認一個四分音符延遲500ms#define P 0 //休止 #define L1 1 //低音…

LLaMA-Factory:開源的低代碼大模型訓練框架

LLaMA-Factory 是一個由零隙智能&#xff08;SeamLessAI&#xff09;開源的低代碼大模型訓練框架&#xff0c;它集成了業界最廣泛使用的微調方法和優化技術&#xff0c;并支持眾多開源模型的微調和二次訓練。 一、功能特點 支持多種開源模型&#xff1a;LLaMA-Factory支持包括…

輻射神經場算法——Instant-NGP / Mipi-NeRF 360 / 3D Gaussian Splatting

輻射神經場算法——Instant-NGP / Mipi-NeRF 360 / 3D Gaussian Splatting 1. Instant-NGP1. MultiResolution Hash Encoding1.2 Accelerated Ray Marching1.3 實驗結果 2. Mip-NeRF 3602.1 場景參數化2.2 在線蒸餾2.3 失真正則化2.4 實驗結果 3. 3D Gaussian Splatting3.1 Dif…