827 次瀏覽
存在三種類型的繼承對映策略:基於表層次結構、基於具體類和基於子類。本文將討論基於表層次結構的策略。基於表層次結構的策略只為繼承對映建立一個表。這種方法的缺點是表中會儲存大量空值。`@Inheritance(strategy=InheritanceType.SINGLE_TABLE)`、`@DiscriminatorColumn` 和 `@DiscriminatorValue` 是此策略中使用的註解。`@DiscriminatorColumn` 用於建立一個額外的列,用於標識層次結構類。請考慮以下示例以瞭解這一點:步驟……閱讀更多
3K+ 次瀏覽
在本文中,我們將瞭解如何在 Hibernate 中執行批次插入/更新。每當我們執行 SQL 語句時,我們都是透過向資料庫發出網路呼叫來實現的。現在,如果我們必須將 10 個條目插入到我們的資料庫表中,那麼我們必須進行 10 次網路呼叫。我們可以透過使用批處理來最佳化我們的網路呼叫。批處理允許我們在單個網路呼叫中執行一組 SQL 語句。為了理解和實現這一點,讓我們定義我們的實體:`@Entity public class Parent { @Id @GeneratedValue(strategy ... 閱讀更多
2K+ 次瀏覽
大多數時候,當我們使用 JPA 查詢時,獲得的結果會被對映到一個物件/特定資料型別。但是當我們在查詢中使用聚合函式時,處理結果有時需要我們自定義 JPA 查詢。讓我們透過一個示例(部門、員工)來理解這一點:Dept.java `@Entity public class Dept { @Id private Long id; private String name; @OneToMany(mappedBy = "dep") private List emp; //Getters //Setters }` 一個部門可以擁有一個或多個……閱讀更多
9K+ 次瀏覽
在本文中,我們將瞭解如何使用像 Hibernate 這樣的 ORM(物件關係對映)框架連線到 MySQL 資料庫。首先,我們需要在我們的 pom.xml 檔案中新增 Hibernate 的 Maven 依賴項:`org.hibernate hibernate-core 5.6.2.Final` 現在,讓我們定義一個實體類,它將使用 Hibernate 對映到資料庫表:`@Entity @Table( name = " Employee") public class Employee { @Id @GeneratedValue(strategy = GenerationType.AUTO) Long id; @Column(name = ... 閱讀更多
快取有助於減少執行查詢的資料庫網路呼叫。一級快取與會話相關聯。它是隱式實現的。一級快取只存在於會話物件存在期間。一旦會話物件終止/關閉,將不會有快取物件。二級快取跨多個會話物件工作。它與會話工廠相關聯。二級快取物件可用於單個會話工廠中的所有會話。當特定會話工廠關閉時,這些快取物件將被終止。實現二級快取我們需要新增以下依賴項以便……閱讀更多
6K+ 次瀏覽
Red Hat 開發了 Hibernate 框架,也稱為 Hibernate 物件關係對映器 (ORM)。這個用於 Java 程式語言的物件關係對映工具的第一個版本於 2007 年 5 月 23 日提供下載。Hibernate 支援跨多個平臺工作的 Java 虛擬機器 (JVM),並且它是用 Java 編寫的。“JPA”代表 Java 永續性 API。它是一個管理關係資料的工具。在最基本的形式中,JPA 是一個規範。它處理物件元資料或關係元資料。Java 永續性查詢語言 (JPQL) 是該語言……閱讀更多
Hibernate 或 JPA 支援 4 種不同型別的主鍵生成器。這些生成器用於在將行插入資料庫時生成主鍵。以下是主鍵生成器:`GenerationType.AUTO`、`GenerationType.IDENTITY`、`GenerationType.SEQUENCE`、`GenerationType.TABLE`。`GenerationType.IDENTITY` - 在 identity 中,資料庫負責自動生成主鍵。插入一行而不為 ID 指定值,並在插入行後,向資料庫請求最後生成的 ID。Oracle 11g 不支援 identity 主鍵生成器。此功能在 Oracle 12c 中受支援。`GenerationType.SEQUENCE` - 在 sequence 中,我們首先向資料庫請求序列的下一組……閱讀更多
19K+ 次瀏覽
Save() 和 persist() 這兩種方法都用於將物件儲存到資料庫中。根據文件:Save() - 持久化給定的瞬態例項,首先分配一個生成的識別符號。(或者如果使用分配的生成器,則使用識別符號屬性的當前值。)如果關聯對映為 `cascade="save-update"`,則此操作會級聯到關聯的例項。根據文件:persist() - 使瞬態例項持久化。如果關聯對映為 `cascade="persist"`,則此操作會級聯到關聯的例項。此方法的語義由 JSR-220 定義。序號關鍵點save()persist()1基本它將物件儲存到資料庫中它也將在資料庫中儲存物件2返回型別它返回生成的 id,返回型別為……閱讀更多
23K+ 次瀏覽
在 Hibernate 中,get() 和 load() 是兩種用於為給定識別符號獲取資料的方法。它們都屬於 Hibernate 會話類。如果會話快取或資料庫中不存在給定識別符號的行,則 get() 方法返回 null,而 load() 方法則丟擲物件未找到異常。序號關鍵點Get()Load()1基本它用於為給定識別符號從資料庫中獲取資料它也用於為給定識別符號從資料庫中獲取資料2空物件如果給定識別符號找不到物件,則它將返回空物件它將丟擲物件未找到異常3延遲……閱讀更多
Hibernate 支援兩種型別的快取:一級快取和二級快取。一級快取是會話級快取,它始終與會話級物件關聯。這種型別的快取用於透過快取物件的狀態來最小化資料庫互動。也就是說,它不會在事務中的每次修改後都更新資料庫,而只在事務結束時更新一次。二級快取是會話工廠級快取,它在所有會話中都可用。在執行事務期間,它會在會話工廠級別載入物件…… 閱讀更多