知識庫 / Spring / Spring Boot RSS 訂閱

Spring Boot 與 Hibernate

Spring Boot,Spring Persistence
HongKong
5
01:23 PM · Dec 06 ,2025

1. 概述

在本教程中,我們將學習如何使用 Spring Boot 與 Hibernate。

我們將構建一個簡單的 Spring Boot 應用程序,並演示如何輕鬆地將其與 Hibernate 集成。

2. 啓動應用程序

我們將使用 Spring Initializr 來啓動我們的 Spring Boot 應用程序。對於這個示例,我們將僅添加所需的配置和依賴項,以集成 Hibernate,並添加 WebJPAH2 依賴項。我們將在下一部分中解釋這些依賴項。

現在,讓我們生成項目並在我們的 IDE 中打開它。我們可以檢查生成的項目結構並識別我們需要配置的文件。

以下是項目結構的樣子:

src
- main
  - java.com.baeldung.springboothibernate.application
    - ExampleApplication.java
  - resources
    - logback.xml
    - application.properties
- test
  - java.com.baeldung.springboothibernate.application.tests
    - ExampleApplicationUnitTest.java

3. Maven 依賴項

如果打開 pom.xml,我們會看到 spring-boot-starter-webspring-boot-starter-test 是 Maven 依賴項。正如它們的名稱所示,這些是 Spring Boot 中的啓動依賴項。

讓我們快速看一下引入 JPA 的依賴項:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

此依賴項包括 JPA API、JPA 實現、JDBC 以及其他必要的庫。由於默認的 JPA 實現是 Hibernate,因此此依賴項本身就足以包含它。

最後,我們將使用 H2 作為這個示例中的一個非常輕量級的數據庫:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

我們可以在 H2 控制枱中檢查數據庫是否正常運行,並提供用户友好的 GUI 用於數據錄入。 我們將啓用它在 application.properties 中:

spring.h2.console.enabled=true

這就是配置成功包含 Hibernate 和 H2 在我們示例中的所有內容。我們可以通過啓動 Spring Boot 應用程序時檢查日誌,以確認配置是否成功。

HHH000412: Hibernate Core {#Version}

HHH000206: hibernate.properties not found

HCANN000001: Hibernate Commons Annotations {#Version}

HHH000400: Using dialect: org.hibernate.dialect.H2Dialect

現在,我們可以通過訪問 http://localhost:8080/h2-console/ 訪問 H2 控制枱。

4. 創建實體

為了驗證我們的 H2 是否正常工作,我們首先將在一個新的 models 文件夾中創建一個 JPA 實體:

@Entity
public class Book {

    @Id
    @GeneratedValue
    private Long id;
    private String name;

    // standard constructors

    // standard getters and setters
}

我們現在有一個基本實體,H2 可以從中創建表。重啓應用程序並檢查 H2 控制枱,將會創建一個名為 Book 的新表。

為了向我們的應用程序添加一些初始數據,我們需要創建一個包含插入語句的新的 SQL 文件,並將其放在我們的 resources 文件夾中。 我們可以使用 import.sql (Hibernate 支持) 或 data.sql (Spring JDBC 支持) 文件來加載數據。

以下是我們的示例數據:

insert into book values(1, 'The Tartar Steppe');
insert into book values(2, 'Poem Strip');
insert into book values(3, 'Restless Nights: Selected Stories of Dino Buzzati');

再次,我們可以重啓 Spring Boot 應用程序並檢查 H2 控制枱;數據現在位於 Book 表中。

5. 創建倉庫和服務

我們將繼續創建基本組件,以便測試我們的應用程序。首先,我們將向一個新的 repositories 文件夾中添加 JPA Repository:

@Repository
public interface BookRepository extends JpaRepository<Book, Long> {
}

我們可以使用 Spring 框架中的 JpaRepository 接口,它提供對基本 CRUD 操作的默認實現。

接下來,我們將添加一個新的 services 文件夾中的 BookService

@Service
public class BookService {

    @Autowired
    private BookRepository bookRepository;

    public List<Book> list() {
        return bookRepository.findAll();
    }
}

為了測試我們的應用程序,我們需要檢查從服務中創建的數據是否可以通過 list()方法獲取。

我們將編寫以下 SpringBootTest

@RunWith(SpringRunner.class)
@SpringBootTest
public class BookServiceUnitTest {

    @Autowired
    private BookService bookService;

    @Test
    public void whenApplicationStarts_thenHibernateCreatesInitialRecords() {
        List<Book> books = bookService.list();

        Assert.assertEquals(books.size(), 3);
    }
}

通過運行此測試,我們可以檢查 Hibernate 是否創建了 Book 數據,然後我們的服務是否能夠成功地檢索這些數據。 並且就這麼簡單,Hibernate 已經與 Spring Boot 運行起來了。

6. 設置表名大寫

有時,我們需要在數據庫中將表名使用大寫字母。正如我們已經知道的,Hibernate 默認情況下會生成小寫字母的表名

我們可以嘗試顯式設置表名:

@Entity(name="BOOK")
public class Book {
    // members, standard getters and setters
}

然而,那樣不行。我們需要在 application.properties 中設置這個屬性:

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

然後我們可以檢查數據庫,確認表已成功創建,且使用了大寫字母。

7. 結論

在本文中,我們發現將 Hibernate 與 Spring Boot 集成有多麼容易。我們使用 H2 數據庫作為一種輕量級的內存解決方案。

我們提供了一個使用所有這些技術的完整示例,並提供了一個關於如何在數據庫中設置表名(全部為大寫)的提示。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.