目錄
範例
輸出
首頁 Java java教程 如何在Hibernate中執行批次插入更新操作?

如何在Hibernate中執行批次插入更新操作?

Aug 27, 2023 pm 11:17 PM
hibernate 大量更新 批量插入

如何在Hibernate中執行批次插入更新操作?

在本文中,我們將看到如何在Hibernate中執行批次插入/更新。

每當我們執行一條sql語句時,我們都是透過對資料庫進行網路呼叫來完成的。現在,如果我們必須向資料庫表中插入 10 個條目,那麼我們必須進行 10 次網路呼叫。相反,我們可以透過使用批次來優化網路呼叫。批次允許我們在單一網路呼叫中執行一組 SQL 語句。

為了理解並實作這一點,讓我們定義我們的實體−

@Entity
public class Parent {
   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   private long id;
   private String name;
   // Getters
   //Setters
}
登入後複製

為了在Hibernate中啟用批次處理,我們需要在我們的應用程式中新增一個屬性

properties檔案:

spring.jpa.properties.hibernate.jdbc.batch_size=3
登入後複製

現在,我們需要執行EntityManager的persist函數將資料插入資料庫

範例

@Autowired
private EntityManager entityManager;
@Test
Public void InsertInBatch(){
   for (int i = 0; i < 6; i++) {
      Parent parent = Parent[i];
      entityManager.persist(parent);
   }
}
登入後複製

輸出

"batch":true, "querySize":1, "batchSize":3, "query":["insert into parent (name, id) values (?, ?)"], "params":[["P1","1"],["P2","2"],["P3","3"]]
"batch":true, "querySize":1, "batchSize":3, "query":["insert into parent (name, id) values (?, ?)"], "params":[["P4","4"],["P5","5"],["P6","6"]]
登入後複製

從控制台我們可以看到,插入父表的操作是在批次大小為3的情況下進行的。

在持久化實體時,可能會發生OutOfMemoryException,因為Hibernate將實體儲存在持久化上下文中。因此,出於最佳化目的,我們可以在每批之後使用實體管理器的flush()和clear()。

批次更新意味著在一次網路呼叫中更新大量資料。

對於批次更新,流程是相同的。我們需要在應用程式屬性檔案中新增以下兩個語句,然後執行更新過程。

spring.jpa.properties.hibernate.order_updates=true
spring.jpa.properties.hibernate.batch_versioned_data=true
登入後複製

範例

更新資料的程式碼−

@Autowired
private EntityManager entityManager;
@Test
public void UpdateInBatch() {
   TypedQuery<Parent> query = entityManager.createQuery("SELECT p from Parent p", Parent.class);
   List<Parent> Parents = query.getResultList();
   int i=1;
   for (Parent parent : Parents) {
      String s="Parent"+Integer.toString(i);
      i++;
      parent.setName(s);
   }
}
登入後複製

Hibernate 現在會將這些語句綁定在一個批次中並執行它們。

輸出

"batch":true, "querySize":1, "batchSize":3, "query":["update parent set name=? where id=?"], "params":[["Parent1","1"],[" Parent2","2"],[" Parent3","3"]]
"batch":true, "querySize":1, "batchSize":3, "query":["update parent set name=? where id=?"], "params":[["Parent4","4"],["Parent5","5"],["Parent6","6"]]
登入後複製

從控制台可以看到,父表中的資料更新是在批次大小為3的情況下進行的。

以上是如何在Hibernate中執行批次插入更新操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Oracle儲存程序實作批次更新的步驟與注意事項 Oracle儲存程序實作批次更新的步驟與注意事項 Mar 08, 2024 pm 04:12 PM

標題:Oracle預存程​​序實現批次更新的步驟與注意事項在Oracle資料庫中,預存程序是一組為了提高資料庫效能、重複使用程式碼、增強安全性的SQL語句集合,透過預存程序可以實現批次更新資料的操作。本文將介紹如何使用Oracle預存程​​序實現批次更新,並提供具體的程式碼範例。步驟一:建立預存程序首先,我們需要建立一個預存過程,用來實現批次更新的操作。以下是建立預存程序的

SpringBoot專案裡怎麼整合Hibernate SpringBoot專案裡怎麼整合Hibernate May 18, 2023 am 09:49 AM

在SpringBoot專案中整合Hibernate前言Hibernate是一個流行的ORM(物件關係映射)框架,它可以將Java物件映射到資料庫表,從而方便地進行持久化操作。在SpringBoot專案中,整合Hibernate可以幫助我們更輕鬆地進行資料庫操作,本文將介紹如何在SpringBoot專案中整合Hibernate,並提供相應的範例。 1.引入依賴在pom.xml檔案中引入以下依賴:org.springframework.bootspring-boot-starter-data-jpam

Java錯誤:Hibernate錯誤,如何處理與避免 Java錯誤:Hibernate錯誤,如何處理與避免 Jun 25, 2023 am 09:09 AM

Java是一種物件導向程式語言,它被廣泛地應用於軟體開發領域。 Hibernate是一種流行的Java持久化框架,它提供了一種簡單且高效的方式來管理Java物件的持久化。然而,開發過程中經常會遇到Hibernate錯誤,這些錯誤可能會導致程式的異常終止或不穩定。如何處理和避免Hibernate錯誤成為了Java開發者必須掌握的能力。本文將介紹一些常見的Hib

Java Hibernate中一對多與多對多關係的對應方式是什麼 Java Hibernate中一對多與多對多關係的對應方式是什麼 May 27, 2023 pm 05:06 PM

Hibernate的一對多和多對多Hibernate是一個優秀的ORM框架,它簡化了Java應用程式與關係型資料庫之間的資料存取。在Hibernate中,我們可以使用一對多和多對多的關係來處理複雜的資料模型。 Hibernate的一對多在Hibernate中,一對多關係是指一個實體類別對應多個另一個實體類別。例如,一個訂單(Order)可以對應多個訂單項目(OrderItem),一個使用者(User)可以對應多個訂單(Order)。要在Hibernate中實作一對多關係,需要在實體類別中定義一個集合屬性來存

Excel資料匯入Mysql常見問題總表:如何解決匯入資料時遇到的大批量插入問題? Excel資料匯入Mysql常見問題總表:如何解決匯入資料時遇到的大批量插入問題? Sep 08, 2023 am 11:07 AM

Excel資料匯入Mysql常見問題總結:如何解決匯入資料時遇到的大批量插入問題?導入Excel資料到MySQL是日常開發中經常遇到的任務之一。對於少量資料的導入,可以使用資料庫客戶端工具或命令列進行插入操作。但當面對大批量資料匯入時,簡單的單一插入操作無疑會導致嚴重的效能問題。本文將介紹如何解決這個問題,並給出相應的程式碼範例。問題描述:在實際使用過程中,

hibernate和mybatis有哪些差別 hibernate和mybatis有哪些差別 Jan 03, 2024 pm 03:35 PM

hibernate和mybatis的差別:1、實作方式;2、效能;3、物件管理的比較;4、快取機制。詳細介紹:1、實作方式,Hibernate是一個完整的物件/關係映射解決方案,將物件與資料庫表進行映射,MyBatis則需要開發者手動編寫SQL語句以及ResultMap;2、效能,Hibernate在開發速度上可能比MyBatis快,因為Hibernate簡化了DAO層等等。

Oracle儲存程序批次更新在資料處理中的應用案例 Oracle儲存程序批次更新在資料處理中的應用案例 Mar 08, 2024 am 10:24 AM

Oracle儲存程序批次更新在資料處理中的應用案例在實際的資料處理中,我們經常需要對資料庫中的大量資料進行更新作業。 Oracle資料庫提供了預存程序的功能,可以有效處理這些大批量資料更新的操作,並提高資料處理效率和效能。在本文中,我們將介紹Oracle預存程​​序批次更新的應用案例,並提供具體的程式碼範例,幫助讀者更好地理解並運用此功能。案例背景假設我們有一個

Java語言中的Hibernate框架介紹 Java語言中的Hibernate框架介紹 Jun 10, 2023 am 11:35 AM

Hibernate是一個開放原始碼的ORM框架,它將關係型資料庫和Java程式之間的資料映射相互綁定,這樣可以讓開發人員更方便地存取資料庫中的資料。使用Hibernate框架可以大幅減少編寫SQL語句的工作,並提高應用程式的開發效率和可重複使用性。以下從以下幾個方面來介紹Hibernate框架。一、Hibernate框架的優點物件關係映射,隱藏資料庫存取細節,使開發

See all articles