Hibernate學習手記 一

2021-03-31 14:39:38 字數 1850 閱讀 1371

2005-3-3    學習hibernate

在學習hibernate中,我發現對於sql server2000中的資料庫子增欄位,在配置檔案使用下列方法實現

:這裡主要是:identity:代表由sql server2000資料庫自己提供子增欄位.如果要hibernate自己提供,則用

increment關鍵字來實現

如果表中的主鍵用字串型別:可以用hibernate自己提供的方法實現主鍵唯一:

使用的是uuid.hex策略

重要的知識點:

1.如果有部門表,有員工表,員工表中有dep_id,則表部門類和員工類是one-to-many的關係:

可以使用:  ( 在部門類department中使用下列)

department類: 

/**  部門的所有員工   */

private set staffs = new treeset();

xml的檔案:

如果是list,需要用索引,具體其中的含義,不是很明白.待以後研究

2. 如果部門要有乙個負責人,即部門表(tb_department)中有乙個字段:staff_id.

那麼表示部門和負責人之間的關係是many-to-one的關係

department類:

/** 部門負責人id */

private staff staff;

xml 檔案

2005-3-4    學習hibernate   

3.多對多關係,一般我們是做乙個中間關聯表.我用角色和許可權做了個例子,

right(id,name)     role(id,name)   中間表:tb_role_right(role_id,right_id)

right類中有乙個role的集合:private set roles=new treeset();

role類中也有乙個right的集合:private set rights=new treeset();

則兩者是明顯的多對多關係.使用many-to-many來實現;

xml檔案中

right.hbm.xml:如下:

role.hbm.xml檔案中類似:

2005-3-5    學習hibernate

4.幾個值得注意的問題:

a)在xml?對映檔案中,寫類的名字時一定用類的全名:即:包+類名如:(hbp.sys.data.staff),這個錯誤使我費了半天勁.:(

b)我在寫實現基本dao操作時,寫了

session.delete("from right as right where right.id="+id); 

程式死活報錯,我折騰了半天,跟蹤到底,才恍然大悟,hibernate在解析sql語句的時候把

其中的right,當成了資料庫中的右連線("保留字"),唉,這種關鍵字,不能隨便用啊,:)

2005-3-7

5.hibernate中hql語言的查詢根據你的sql的不同而返回不同的物件型別.

如果你使用session.find(string hql)

一般會返回乙個list,如:from staff staff;返回的是包含所有的員工物件的集合

如你的hql為:select count(*) from staff staff;則返回的是乙個integer物件

如果你使用的hql為:select count(distinct staff.name),count(*) from staff staff;則返回的是乙個object

即object,需要先把他轉換成object,然後在取[0],[1].

這種設計我不知道hibernate是如何處理的,感覺既好也不好.好的是可以使用乙個find獲得任意查詢

不好在於根據hql來處理返回結果,容易出錯.

Hibernate學習筆記一

應用程式結構 表現層,業務邏輯層,持久層,資料庫 業務邏輯層處理使用的實體物件由持久層提供。持久化就是把資料儲存到可永久儲存的儲存裝置中,如關係型資料庫。對於業務邏輯層,持久層返回服務業務層需要的實體模型。對於資料庫,把實體物件轉換為關聯式資料庫儲存的形式與資料庫互動。持久層遮蔽了資料庫平台的變化對...

Delphi學習手記

本人一直使用c buider,並開發了乙個 商關係管理 的三層應用系統.現公司要求使用delphi,沒辦法只有重新學習pascal語言.便記錄學習的過程,那就叫delphi學習手記吧.1 好象inherit form不行,如果想覆蓋上邊的方法,重寫事件或函式,竟然報錯,不懂先,是不是inherit不...

python學習手記

1.list由小到大排序用list.sort 由大到小排序用list.sort reverse true 2.list逆序用list.reverse 3.list 0 代表list中的第乙個元素,中括號一般用於表示元素位置,表示元素 4.dict中沒有排序的說法,keys用於表示位置,應用時用 6....