825 次瀏覽
存在三種類型的繼承對映策略:表繼承層次結構、表具體類和表子類。在本文中,我們將討論表繼承層次結構。表繼承層次結構只為繼承對映建立一個表。這種方法的缺點是表中會儲存大量空值。`@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|空物件|如果找不到給定識別符號對應的物件,則返回null物件|將丟擲物件未找到異常|3|延遲載入…閱讀更多
Hibernate支援兩種型別的快取:一級快取和二級快取。一級快取是會話級快取,始終與會話級物件相關聯。此類快取用於透過快取物件的狀態來最小化資料庫互動。也就是說,它不會在每次事務修改後都更新資料庫,而只在事務結束時更新。二級快取是會話工廠級快取,可在所有會話中使用。在執行事務期間,它會在會話工廠級別載入物件……閱讀更多