前一天提到 Spring Data JPA,今天就來聊一下 Hibernate 這個常被使用的持久化框架。
Hibernate 是一個開源的 Java 持久化框架,它的目標是幫助開發者更容易地從關聯式資料庫中存取資料。在過去,開發者經常需要手寫 SQL 語句來對資料庫進行操作,這不僅工作量大,而且容易出錯。Hibernate 提供了一種方法,讓我們可以使用物件導向的方式來管理資料庫的資料,這使得資料的存取變得更簡單、更有邏輯性。
有些人可能會疑惑,上一篇已經介紹了 JPA,那和 Hibernate 又有什麼不同?
JPA 是 Java Persistence API 的縮寫,它是一套 Java 平台上的規範,提供了一個明確的持久化標準。而 Hibernate 是基於這個規範下實作的框架,換句話說 Hibernate 遵循了 JPA 的規範,並提供了具體的功能。
<!-- 省略其他 dependency -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
配置 application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=dbmeowmeow
spring.datasource.password=pwmeowmeow
spring.jpa.hibernate.ddl-auto=update
// 假如使用 MySQL 資料庫
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
// 假如使用 Oracle 資料庫
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.OracleDialect
hibernate.dialect
是一個配置屬性,指的是 Hibernate 如何與特定的資料庫系統互動的語言和行為。在 RDBMS 世界中,雖然 SQL 是一種標準語言,但各個資料庫系統(如 MySQL、Oracle、SQL Server 等)都有自己的方言,因此使用 Hibernate 這樣的 ORM 工具時,需要針對特定資料庫的生成最佳 SQL syntax。
建立實體(Entity)
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// 省略 getters, setters 還有其他方法
}
建立 Repository
public interface UserRepository extends JpaRepository<User, Long> {}
以上這樣我們就可以透過 UserRepository 來進行資料庫操作了,非複雜查詢時可以不用再撰寫任何 SQL 語句。
善用這個靈活的工具能幫助我們高效、穩定地進行開發!