Hibernate ! Why?

Why Hibernate

寫 Web applicantion 的時候,大多數的情境都某個 Domain Entity 進行 CRUD (Create, Read, Update, Delete),這類型的SQL 寫多了生產力就會下降,如果你的Application 需要在不同的 database 運作就會顯得更痛苦。

其中一種解決問題的方式叫做 ORM,透過Object 的方式來映射 Database的相關欄位,當操作 CRUD 的時候只需要對 Object 進行操作,不需要透過 SQL 來處理,也是說 ORM 至少涵蓋了兩件事

  1. Database Field 與 Object Attribute 產生關聯
  2. 協助產生 CRUD 的 SQL
  3. 處理不同 Database 之間的語法差異,透過 Dialect 來解決

在 Java 裡面使用 ORM 幾乎只有一個選擇就是用 Hibernate, Hibernate 的演進已經相當多年,從我大學 2008 年到現在 Hibernate 在 ORM 領域深入近十年,在各方便都已經相當成熟。

JPA And Hibernate

JPA or Hibernate 這兩個概念在剛開始了解的時候,相當容易弄混,JPA 指的是一個通用的標準,但不包含實作,所以Hibernate 會有 JPA 的實作,其它 ORM 框架也會有。


總的來說,透過 Hibernate 來處理 Object 和 Relational Database 之間的關係,可以讓程式的可讀性高一點,但是有副作用的,效能問題或是複雜一點的 Query 透過這樣的方式寫出來也沒好看到哪裡去,所以這幾年的走向開始慢慢往 JOOQ 這種協助產生 SQL 的 Libary,不過 JOOQ 要是需要收費的,這也是很困擾的一點。

Reference