顯示具有 Hibernate 標籤的文章。 顯示所有文章
顯示具有 Hibernate 標籤的文章。 顯示所有文章

2014年6月9日 星期一

Spring data jpa + hibernate + SpringMVC + MySQL 實現 CRUD

關於eclipse對於maven的介紹http://d12e493.blogspot.tw/search/label/Maven

關於SpringMVC的介紹http://d12e493.blogspot.tw/search/label/SpringMVC

此篇使用SpringMVC的架構

dao層則是spring data jpa及hibernate


簡單操作一個CRUD的例子,

專案建置如下:























2014年6月8日 星期日

Spring data jpa + Hibernate

利用spring data及使用jpa規範,

大量簡化了dao接口的coding,

另外還可以使用spring data的許多介面幫忙實現實作,

也不需要撰寫一般常用的CRUD以及查詢實作,

只要撰寫介面後,spring data便會幫你完成實作的部分。

2014年1月19日 星期日

HQL 使用簡介

HQL是官方推薦的查詢語法,

有點類似SQL,

比較不同的是所使用的查詢指令,

都是依照物件的屬性和類別名稱,

必須用物件的方式來下HQL指令,

簡單的查詢指令如下:
   
   Query query = session.createQuery("from Member m");
   List<Member> list = query.list();

   for (Member m : list) {
    System.out.println(m.getName() + "\t" + m.getAge());
   }

Criteria 查詢方式

在hibernate中,

你可以使用criteria的查詢方式,

不需要下SQL或HQL指令,

也可避免因為換資料庫造成SQL的不相容,

而需要重新改寫SQL的負擔,

最簡單的查詢方式如下:
   Criteria criteria = session.createCriteria(Member.class);
   List<Member> list = criteria.list();


2014年1月14日 星期二

雙向多對多 XML Mapping

在多對多的配置中,

會採用一個中介表來記錄對應的資料,

最常見的就是使用者(User)與角色(Role)的多對多配置,

一個User可以有很多種Role,

一個Role也對應很多個User,

可參考下圖:











2014年1月13日 星期一

單向一對多 XML Mapping

如果今天考慮一對多的配置模式,

例如一個老師教很多位學生,

如下圖:












單向多對一 XML Mapping

如果今天兩個資料表考慮的情況是多對一,

例如員工跟部門,

多個員工屬於同一個部門,一個部門有許多員工,

如下圖:













2014年1月11日 星期六

雙向一對一(唯一外鍵關聯) XML Mapping

假設今天一個供應商對應一個銀行帳戶,

但這兩個table有各自的primary key,

我們可以考慮在供應商的table裡面,

增加一個外鍵欄位來連結銀行帳戶,

參考以下的供應商(Supply)和銀行帳戶(BankAccount)的關聯圖,










2014年1月9日 星期四

單向一對一(主鍵關聯) XML Mapping

在hibernate的一對一配置中,

如果你採用的是如下的主鍵關聯方式,











可看到人和車的一對一關聯設定,

並且採用的是同一主鍵關聯對應,

2013年7月4日 星期四

Hibernate get() vs load()

在Hibernate中載入數據常使用這兩個方法,

在看了一些書之後,

對其中的差異有了比較明確的瞭解,

查詢順序

get():

Hibernate會先確認id是否存在,然後在session緩存中尋找,

沒有的話找二級緩存,也沒有就查詢資料庫,

還是沒有就返回null。

2013年7月3日 星期三

Hibernate 延遲加載

在Hibernate中,

延遲加載是一個很常用的技術,

它可以在程式需要時才去調用資料庫內的對象,

避免過早加載,也可防止載入過多用不到的資源,

減少記憶體的消耗,

默認情況下,Hibernate對於其對象的關聯對象和集合類都使用延遲加載,

Hibernate Query list() vs iterator()

初次使用Hibernate時,

常會使用到這兩個查詢方式,

網路查詢到的資料有些不是很正確,

這邊分享一些自己看Hibernate實戰的心得,

查詢方式

list():

只會送出一條SQL,將結果集都存在一級和二級緩存(有開的話),